二、python与mysql交互
pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。
下载安装
1 pip3 install pymysql
2.1.执行原生sql语句
1 import pymysql 2 conn = pymysql.connect(host='192.168.48.20', port=3306, user='root', passwd='123', db='test') # 创建连接 3 cursor = conn.cursor() # 创建游标 4 # num = cursor.execute("create table student (name CHAR(20),age INT(3),date DATE )") # 创建表不需要提交可以生效 5 num = cursor.execute("insert into student value('hua',25,'1992-05-22')") # 执行sql返回受影响的条目数 6 print(num) 7 conn.commit() # pymysql默认开启了事务,进行数据库更新需要提交 8 cursor.close() # 关闭游标 9 conn.close() # 关闭连接
2.2.批量执行sql
实际是循环调用execute
1 import pymysql 2 conn = pymysql.connect(host='192.168.48.20', port=3306, user='root', passwd='123', db='test') # 创建连接 3 cursor = conn.cursor() # 创建游标 4 # 一次性执行操作多条,参数为print(num)#打印条结果条目 5 num = cursor.executemany("insert into student values(%s,%s,%s)", [('jack', 22, '1993-01-11'), ('tara', 18, '1998-03-04')]) 6 conn.commit() # pymysql默认开启了事务,进行数据库更新需要提交 7 new_id = cursor.lastrowid # 如果是自增id,该方法可以获取到插入完成以后的IDprint(new_id) 8 cursor.close() # 关闭游标 9 conn.close() # 关闭连接
2.3.查询操作:fetch
1 import pymysql 2 conn = pymysql.connect(host='192.168.48.20', port=3306, user='root', passwd='123', db='test') # 创建连接 3 cursor = conn.cursor() # 创建游标 4 cursor = conn.cursor() 5 cursor.execute("select * from student") 6 # 获取第一行数据 7 row_1 = cursor.fetchone() 8 print(row_1) 9 # 获取前n行数据 10 row_2 = cursor.fetchmany(3) 11 print(row_2) 12 # 获取所有数据 13 # row_3=cursor.fetchall() 14 cursor.scroll(0, mode='absolute') # 将游标重新移至开始处 15 row_new = cursor.fetchone() 16 print(row_new) 17 cursor.close() # 关闭游标 18 conn.close() # 关闭连接
TIPS:使用fetchone获取数据如同读取文件一样,如果读一行游标会下移一行
可以使用cursor.scroll(num,mode)来移动游标位置,如:
- cursor.scroll(1,mode='relative') # 相对当前位置移动
- cursor.scroll(2,mode='absolute') # 相对绝对位置移动
2.4.设置fetch获取数据类型
默认使用fetch查询结果是tuple,我们还可以设置获取的数据返回时dict
1 import pymysql 2 3 conn = pymysql.connect(host='192.168.48.20',port=3306,user='root',passwd='123',db='test') 4 # 游标设置为字典类型 5 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 设置游标类型为字典 6 r = cursor.execute("select * from student") 7 res = cursor.fetchone() 8 print(res) 9 cursor.close() 10 conn.close() 11 结果: 12 {'name': 'bg', 'age': 22, 'date': datetime.date(1993, 5, 22)}