什么是 PyMySQL?
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。
PyMySQL的安装
pip3 install pymysql #pymysql模块,同属于套接字模块。
PyMySQL的基本使用
使用PyMySQL模块固定不变的执行顺序
- 建立连接
- 拿到游标
- 执行SQL语句
- 关闭(游标、连接)
2.连接到数据库
先来查看一下数据库里有哪些数据
使用pymysql 下的connect方法来连接数据库,先来看下需要哪些参数
进入源码可以看到需要的参数
( host=None, user=None, password="", database=None, port=0, unix_socket=None, charset='', sql_mode=None, read_default_file=None, conv=None, use_unicode=None, client_flag=0, cursorclass=Cursor, init_command=None, connect_timeout=10, ssl=None, read_default_group=None, compress=None, named_pipe=None, autocommit=False, db=None, passwd=None, local_infile=False, max_allowed_packet=16*1024*1024, defer_connect=False, auth_plugin_map=None, read_timeout=None, write_timeout=None, bind_address=None, binary_prefix=False, program_name=None, server_public_key=None )
别怕,最常用的参数也就是那几个,直接看代码
import pymysql # 创建连接,test1为数据库 conn = pymysql.connect( host = '127.0.0.1', user = 'root', password="123456", database='test1', port=3306, charset='utf8', ) # 创建游标 cursor = conn.cursor() # 执行sql语句 row=cursor.execute('select * from student') print(row) # 关闭连接,游标和连接都要关闭 cursor.close() conn.close() 执行结果为:4
3.查询
pymysql里查询分为查询一条,查询多条和查询全部
查询一条
import pymysql # 创建连接 conn = pymysql.connect( host='127.0.0.1', user='root', password="123456", database='test1', port=3306, charset='utf8', ) # 创建游标 cursor = conn.cursor() # 执行sql语句 row = cursor.execute("select * from student") # 取一条数据 print(cursor.fetchone()) # 在取一条数据 print(cursor.fetchone()) 执行结果: (1, '李六', 23) (2, '王五', 23)
查询多条
import pymysql # 创建连接 conn = pymysql.connect( host='127.0.0.1', user='root', password="123456", database='test1', port=3306, charset='utf8', ) # 创建游标 cursor = conn.cursor() # 执行sql语句 row = cursor.execute("select * from student") #参数是需要查询几条 print(cursor.fetchmany(2)) 执行结果: ((1, '李六', 23), (2, '王五', 23))
查询所有
import pymysql # 创建连接 conn = pymysql.connect( host='127.0.0.1', user='root', password="123456", database='test1', port=3306, charset='utf8', ) # 创建游标 cursor = conn.cursor() # 执行sql语句 row = cursor.execute("select * from student") # 查询所有 print(cursor.fetchall()) 执行结果:((1, '李六', 23), (2, '王五', 23), (4, '李四', 54), (11, '张三', 33))
通过上面的查询,发现返回的都是元组,pymysql提供了返回字典的格式,只需要在创建游标的时候加上cursor=pymysql.cursors.DictCursor就可以里
然后再来执行上面的代码
import pymysql # 创建连接 conn = pymysql.connect( host='127.0.0.1', user='root', password="123456", database='test1', port=3306, charset='utf8', ) # 创建游标 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 执行sql语句 row = cursor.execute("select * from student") # 查询所有 print(cursor.fetchall()) 执行结果:[{'id': 1, 'name': '李六', 'age': 23}, {'id': 2, 'name': '王五', 'age': 23}, {'id': 4, 'name': '李四', 'age': 54}, {'id': 11, 'name': '张三', 'age': 33}]
3.插入数据
import pymysql # 创建连接 conn = pymysql.connect( host='127.0.0.1', user='root', password="123456", database='test1', port=3306, charset='utf8', ) # 创建游标 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 插入一条数据 cursor.execute("insert into student(name,age) values('haohao',26)") data = [ ('M1', 26), ('M2', 22), ('M3', 30) ] # 一次性插入多条数据 cursor.executemany("insert into student(name,age) values(%s,%s)", data) # 插入 删除 更新 一定要commit() conn.commit() cursor.close() conn.close()
--