python3完成mysql操作

python3使用pymysql操作mysql5.7

版本信息:

1
2
3
4
MYSQL 5.7.21
PYTHON 3.6
pymysql 0.8.0
WIN 10

安装

首先,老样子,安装。
windows控制台直接执行:

1
pip install pymysql

即可,pipenv进行类包管理,控制台中进入工程所在目录下,执行:

1
pipenv install pymysql

SQL

sql.py文件,包含初始化数据库,创建库,创建表所有sql:

1
2
3
4
5
6
7
8
9
10
11
# 创建gloryroad数据库
create_database = 'CREATE DATABASE IF NOT EXISTS gloryroad DEFAULT CHARSET utf8 COLLATE utf8_general_ci;'

# 创建testdata表
drop_table = 'drop table if exists TESTDATA;'
create_table = """CREATE TABLE TESTDATA (
id INT NOT NULL,
bookname VARCHAR(40) NOT NULL UNIQUE,
author VARCHAR(30) NOT NULL)"""
primary_sql = 'alter table testdata add primary key(id);'
alter_id = 'alter table testdata change id id int AUTO_INCREMENT NOT NULL;'

创建表时候,我们在mysql控制台,或者在类似Navicat for mysql这样的数据库连接工具中直接执行

1
2
3
4
5
6
7
CREATE TABLE `testdata` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`bookname` varchar(40) NOT NULL,
`author` varchar(30) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `bookname` (`bookname`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

即可创建包含主键,唯一键,自增字段等属性的testdata表,但是不知道为啥,我直接在pycharm中执行,一直报错,又不想耗在这上面,就拆开来了,先创建表,再增加主键,修改字段等操作。

pymysql创建数据库及表

创建库和表

pymysql对mysql的操作,基本可以总结为几步:

1
2
3
4
5
6
建立连接(connect)
打开游标(cursor)
执行sql(execute)
提交事务(commit)
关闭游标(close cursor)
关闭连接(connect close)

所以进行创建数据库和表操作时,一步一步执行即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
@author: kyle
@time: 2018/2/11 13:06
"""
from SQL import *
import pymysql


class DataBaseInit(object):
"""
1、数据库初始化
2、创建数据库及表,并向表中插入测试数据
"""
def __init__(self, host, port, dbName, username, password, charset):
self.host = host
self.port = port
self.db = dbName
self.username = username
self.password = password
self.charset = charset

def creaete(self):
# 建库及表
try:
# 连接mysql数据库
conn = pymysql.connect(
host = self.host,
port = self.port,
user = self.username,
passwd = self.password,
charset = self.charset
)
# 获取数据库游标
cur = conn.cursor()
# 创建数据库
cur.execute(create_database)
# 选择创建好的数据库
conn.select_db("gloryroad")
# 建表并更改字段
cur.execute(drop_table)
cur.execute(create_table)
cur.execute(primary_sql)
cur.execute(alter_id)
except pymysql.Error as e:
raise e
else:
# 关闭游标
cur.close()
# commit
conn.commit()
# 关闭连接
conn.close()
print(u"创建数据库及表成功")

插入数据

插入数据也是正常步骤即可,当插入不止一条数据,可以使用executemany()来一次插入多条数据,配合insert into table (col1, col2) values (%s, %s)可以完成参数化一次插入大量数据;插入数据方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
def insertData(self):
# 插入数据
try:
# 连接具体某个库
conn = pymysql.connect(
host=self.host,
port=self.port,
db=self.db,
user=self.username,
passwd=self.password,
charset=self.charset
)
# 打开游标
cur = conn.cursor()
# 插入数据
sql = "insert into testdata (bookname, author) values (%s, %s)"
cur.executemany(sql, [
['FACE TO FACE WITH FARE', 'Amana Trobe'],
['Relationship', 'Christopher benas Meng'],
['ZOO', 'Yiyi']
])
except pymysql.Error as e:
raise e
else:
conn.commit()
print(u"初始化数据插入成功")
# 确认插入成功
# cur.execute("select * from testdata;")
# for i in cur.fetchall():
# print(i[1], i[2])
cur.close()
conn.close()

从mysql获取数据

很简单,一步一步走即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
def getDataFromDataBases(self):
# 从testdata表获取测试数据
# bookname作为testdata,author作为expectdata
self.cur.execute("select bookname, author from testdata;")
# 取查询结果
datasTuple = self.cur.fetchall()
return datasTuple

def closeDatabase(self):
# 数据库后续操作
self.cur.close()
self.conn.commit()
self.conn.close()

至此,就可以完成测试数据存在mysql中,从数据库表中完成测试数据的读取以及断言判断等操作。

文章目录
  1. 安装
  2. SQL
  3. pymysql创建数据库及表
    1. 创建库和表
    2. 插入数据
  4. 从mysql获取数据
|