Python连接、操作MySql

连接mysql的两种方法

mysql.connetcor.connect

# coding=utf-8
import mysql.connector
from mysql.connector import errorcode
try:
    conn = mysql.connector.connect(user='root', password='xilige123', host='127.0.0.1', database='mysql')
    print conn
except mysql.connector.Error as err:
    if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
        print('Something is wrong with your username or password')
    elif err.errno == errorcode.ER_BAD_DB_ERROR:
        print('Database does not exist')
    else:
        print(err)
else:
    conn.close()
# 如果有很多参数, 可将其保存为dict然后**dict传入
config = {
    'user': 'root',
    'password': 'xilige123',
    'host': '127.0.0.1',
    'database': 'spider',
    'raise_on_warnings': True,
}
# conn2 = mysql.connector.connect(**config)
# print(conn2)


# conn.close()

connection.MySQLConnection

from mysql.connector import connection
conn = connection.MySQLConnection(user='root', password='xilige123', host='127.0.0.1', database='mysql')
print conn

建议使用第一种connector方法

创建tables

from __future__ import print_function
import mysql.connector
from mysql.connector import errorcode

DB_NAME = 'spider'

TABLES = {}
# 智联JD
TABLES['JD_ZL'] = ("""CREATE TABLE `JD_ZL` (
`id`  int NOT NULL COMMENT 'JD的id, 自增' ,
`job_title`  varchar(255) COMMENT '职位名称' ,
`company`  varchar(255) COMMENT '公司名称' ,
`welfare`  varchar(255) COMMENT '福利待遇' ,
`salary`  varchar(255) COMMENT '职位月薪' ,
`work_location`  varchar(255) COMMENT '工作地点' ,
`date`  datetime COMMENT '发布日期' ,
`work_property`  varchar(8) COMMENT '工作性质' ,
`years`  varchar(8) COMMENT '工作年限' ,
`degree`  varchar(8) COMMENT '最低学历' ,
`numbers`  int(8) COMMENT '招聘人数' ,
`job_category`  varchar(20) COMMENT '职位类别' ,
`job_description`  longtext,
`company_introduction`  longtext,
PRIMARY KEY (`id`))""")

cnx = mysql.connector.connect(user='root', password='xilige123', host='127.0.0.1', database=DB_NAME)
cursor = cnx.cursor()
# 创建库spider
try:
    cursor.execute("CREATE DATABASE {} DEFAULT CHARACTER SET 'utf8'".format(DB_NAME))
except mysql.connector.Error as err:
    print('Failed creating database: {}'.format(err))

# 创建表
for name, ddl in TABLES.iteritems():
    try:
        print('Creating table {}: '.format(name), end='')
        cursor.execute(ddl)
    except mysql.connector.Error as err:
        if err.errno == errorcode.ER_TABLE_EXISTS_ERROR:
            print("abready exists.")
        else:
            print (err.msg)
    else:
        print("OK")
# 关闭连接
cursor.close()
cnx.close()

插入数据

from __future__ import print_function
import mysql.connector
from mysql.connector import Error
from datetime import date, datetime, timedelta

cnx = mysql.connector.connect(
    user='root', password='xilige123', database='spider', host='127.0.0.1')
cursor = cnx.cursor()
add_jd = (
    """INSERT INTO jd_zl VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""
)

data_jd = (3, '高级Java开发工程师', '北京北方银证软件开发有限公司',
           '五险一金|年底双薪|加班补助|餐补|房补|带薪年假|定期体检|员工旅游', '职位月薪:10001-15000元/月',
           '工作地点:北京', date(2017, 4, 21), '工作性质:全职', '3-5年', '最低学历:大专', 2,
           '职位类别:高级软件工程师', '参与或负责公司核心产品的设计和程序开发等工作', '一间专业致力于公用事业计算机应用的软件提供商')
# 插入一条jd
try:
    cursor.execute(add_jd, data_jd)
except Exception as e:
    print('插入失败')
    print(e)

# 提交插入到数据库
cnx.commit()
# 关闭连接
cursor.close()
cnx.close()

查询数据

import mysql.connector

cnx = mysql.connector.connect(
    user='root', database='spider', password='xilige123', host='127.0.0.1')
query = ('SELECT * from jd_zl')
cursor = cnx.cursor()
cursor.execute(query)
# 将查询的所有结果导到变量result
result = cursor.fetchall()

# 打印查询结果
for i in range(len(result)):
    for j in range(len(result[0])):
        print(result[i][j])
    print('\n')
cursor.close()
cnx.close()

更新数据

import mysql.connector

cnx = mysql.connector.connect(user='root', password='xilige123', host='127.0.0.1', database='spider')

cura = cnx.cursor(buffered=True)
curb = cnx.cursor(buffered=True)

query = ('SELECT * FROM jd_zl WHERE id > 2')
update = ("UPDATE jd_zl SET job_title_ = %s WHERE id > 2") % ('job_title',)

curb.execute(update)
cnx.commit()

猜你喜欢

转载自blog.csdn.net/xiligey1/article/details/80267953