在Python中如何实现与数据库(MySQL)的交互?
python中提供了一个第三方库:pymysql
首先需要安装:pip install pymysql
源码解析
首先看一段pymysql中的源码:
def __init__(self, host=None, user=None, password="",
database=None, port=0, unix_socket=None,
charset='', ......):
- 1
- 2
- 3
主要参数解析:
host:mysql服务器所在的主机的IP;(必要参数)
user:用户名;(必要参数)
password:密码;(必要参数)
database:所要操作的数据库名;
port:连接mysql的主机的端口号,默认为3306;
charset:编码集,根据电脑或者数据库的编码格式进行对应设置;
其他参数视情况可进行相应设置,这里主要介绍常用参数。
案例分析
import pymysql
#1、建立连接,创建一个数据库对象
connect = pymysql.connect(host='localhost',
user='test',
password='test',
database='test_mysql',
port=3306,
charset='utf-8')
#2、创建游标对象
cursor = connect.cursor()
#3、执行对应的sql语句
sql = 'select * from member where id=%s'
cursor.execute(sql,args=(0010,))
connect.commit() #需要手动提交
#4、获取结果
result1 = cursor.fetchone() #返回所有记录中第一条记录
result2 = cursor.fetchall() #返回所有记录
#5、关闭连接(先关闭游标,再关闭连接)
cursor.close()
connect.close()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
result1 output:
(1220, 'test_l_4122', datetime.datetime(2019, 5, 7, 10, 45, 11))
result2 output:
((1220, 'test_l_4122', datetime.datetime(2019, 5, 7, 10, 45, 11)),)
- 1
- 2
- 3
- 4
常用相关方法:
所有的方法操作适用于游标对象
execute(query, args=None):
执行单条sql语句,接收两个参数,第一个为要被执行的sql语句,第二个为sql中需要传入的参数(如例子中所写)。
executemany(query,args=None):
执行单条sql语句,接收两个参数,第一个为要被执行的sql语句,第二个为sql中需要传入的参数,重复执行参数,直到满足条件的截止;
fetchone():
返回执行sql语句的一条结果行;
fetchall():
返回执行的sql语句的全部结果行;
fetchmany(size):
接收size条返回结果行。如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据;
常用sql操作语句(针对表中数据的操作):
增:insert into '表名'(列名1,列名2,...)values(列值1,列值2,...));
删:delete from '表名' where values='';
改:update '表名' set 列名='new 列值' where '条件';
查:select * from '表名' where '列名'='';
案例解析:
import pymysql
connect = pymysql.connect(host='localhost',
user='test',
password='test',
database='test_mysql',
port=3306,
charset='utf-8')
cursor = connect.cursor()
# 更新数据
sql = 'update member set mobilephone=%s where id=%s'
# 删除数据
sql = 'delete from member where mobilephone=13112345678'
try:
cursor.execute(sql,[13122223333,1231]) #以更新数据为例
connect.commit()
print("更新成功")
except:
print("更新失败")
connect.rollback()
cursor.close()
connect.close()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
总结:
① pymysql模块是默认开启mysql的事务功能的,因此,进行 “增”、 “删”、”改”的时候,一定要使用connect.commit()提交事务,否则就看不见所插入的数据。
② 进行 “增”、“删”、”改”的时候,一定要使用try…except…语句,因为万一没插入成功,其余代码都无法执行。当语句执行不成功,我们就connect.rollback()回滚到操作之前的状态;当语句执行成功,我们就connect.commit()提交事务。