安装插件
1 | python -m pip install mysql-connector |
建立链接
1 | import mysql.connector |
conn就是mysql的链接对象,它可以提交开启事务、提交、回滚,也可以关闭来mysql断开链接
查询操作
执行查询,需要经过以下几个过程:
- 获取一个游标,数据操作都是基于游标来处理。链接的cursor方法会返回一个游标,如上面
conn.cursor()
就会返回游标。 - 调用游标的execute方法,执行sql。
- 获取执行结果,我们可以用fetchone()一次获取一条记录,也可以用fetchall(),一次性获取所有记录。
1
2
3
4
5
6
7
8
9
10
11cursor = cnn.cursor()
try:
sql_query = 'select name,age from stu ;'
cursor.execute(sql_query)
for name, age in cursor:
print (name, age)
except mysql.connector.Error as e:
print('query error!{}'.format(e))
finally:
cursor.close()
cnn.close()
获取全部数据
1 | cmd = conn.cursor() |
获取一条数据
1 | cmd = conn.cursor() |
一次获取n条数据
1 | cmd = conn.cursor() |
插入操作
1 | # 创建一个查询 |
更新操作
1 | # 创建一个查询 |
知识点
fetchone() 一次获取一条数据,每执行一次游标自动移动到下一条,直到数据全部读出。
fetchmany(5) 一次获取5条数据,没执行一次游标向后移动,直到数据全部读出。
fetchall() 一次获取所有数据
预处理
前面的例子都是直接执行sql语句,这样存在一定的危险性。预处理是不错的方式。execute方法支持3个参数:
第一个参数是执行的sql,sql中的参数可以使用具体内容,也可以使用占位符
第二个参数,是当以一个参数使用了占位符时用到的,参数类型是一个元组(tuple),元祖的元素个数,根据第一个参数中的占位符个数决定
第三个表示第一个参数是不是多个SQL语句,如果是的话,就传入True,否则传入False
查询
1 | cmd = conn.cursor() |
更新、删除
1 | # 删除 |
上面的操作如果去掉conn.commit(),输出结果也会是[(1, 'lisi', 20)]
,但进入数据库查看,数据库的内容并不会更新。
知识点
预处理时,python会实时得知sql执行的最终结果。但是如果不执行commit()
数据库内的数据不会真正更新。
参考资料
https://www.cnblogs.com/-beyond/p/9798970.html
https://www.cnblogs.com/xiaohuomiao/p/10729818.html