Python3连接MySQL
本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用。
PyMySQL介绍
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
Django中也可以使用PyMySQL连接MySQL数据库。
PyMySQL安装
pip install pymysql
连接数据库
注意事项
在进行本文以下内容之前需要注意:
你有一个MySQL数据库,并且已经启动。
你有可以连接该数据库的用户名和密码
你有一个有权限操作的database
基本使用
#导入pymysql模块
importpymysql#连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)#得到一个可以执行SQL语句的光标对象
cursor =conn.cursor()#定义要执行的SQL语句
sql = """CREATE TABLE USER1 (
id INT auto_increment PRIMARY KEY ,
name CHAR(10) NOT NULL UNIQUE,
age TINYINT NOT NULL
)ENGINE=innodb DEFAULT CHARSET=utf8;"""
#执行SQL语句
cursor.execute(sql)#关闭光标对象
cursor.close()#关闭数据库连接
conn.close()
返回字典格式数据:
#导入pymysql模块
importpymysql#连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)#得到一个可以执行SQL语句并且将结果作为字典返回的游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)#定义要执行的SQL语句
sql = """CREATE TABLE USER1 (
id INT auto_increment PRIMARY KEY ,
name CHAR(10) NOT NULL UNIQUE,
age TINYINT NOT NULL
)ENGINE=innodb DEFAULT CHARSET=utf8;"""
#执行SQL语句
cursor.execute(sql)#关闭光标对象
cursor.close()#关闭数据库连接
conn.close()
注意:
charset=“utf8”,编码不要写成"utf-8"
增删改查操作
增
#导入pymysql模块
importpymysql#连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)#得到一个可以执行SQL语句的光标对象
cursor =conn.cursor()
sql= "INSERT INTO USER1(name, age) VALUES (%s, %s);"username= "Alex"age= 18
#执行SQL语句
cursor.execute(sql, [username, age])#提交事务
conn.commit()
cursor.close()
conn.close()
插入数据失败回滚
在执行增删改操作时,如果不想提交前面的操作,可以使用 rollback() 回滚取消操作。
#导入pymysql模块
importpymysql#连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)#得到一个可以执行SQL语句的光标对象
cursor =conn.cursor()
sql= "INSERT INTO USER1(name, age) VALUES (%s, %s);"username= "Alex"age= 18
try:#执行SQL语句
cursor.execute(sql, [username, age])#提交事务
conn.commit()exceptException as e:#有异常,回滚事务
conn.rollback()
cursor.close()
conn.close()
获取插入数据的ID(关联操作时会用到)
#导入pymysql模块
importpymysql#连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)#得到一个可以执行SQL语句的光标对象
cursor =conn.cursor()
sql= "INSERT INTO USER1(name, age) VALUES (%s, %s);"username= "Alex"age= 18
try:#执行SQL语句
cursor.execute(sql, [username, age])#提交事务
conn.commit()#提交之后,获取刚插入的数据的ID
last_id =cursor.lastrowidexceptException as e:#有异常,回滚事务
conn.rollback()
cursor.close()
conn.close()
批量执行
#导入pymysql模块
importpymysql#连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)#得到一个可以执行SQL语句的光标对象
cursor =conn.cursor()
sql= "INSERT INTO USER1(name, age) VALUES (%s, %s);"data= [("Alex", 18), ("Egon", 20), ("Yuan", 21)]try:#批量执行多条插入SQL语句
cursor.executemany(sql, data)#提交事务
conn.commit()exceptException as e:#有异常,回滚事务
conn.rollback()
cursor.close()
conn.close()
删
#导入pymysql模块
importpymysql#连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)#得到一个可以执行SQL语句的光标对象
cursor =conn.cursor()
sql= "DELETE FROM USER1 WHERE id=%s;"
try:
cursor.execute(sql, [4])#提交事务
conn.commit()exceptException as e:#有异常,回滚事务
conn.rollback()
cursor.close()
conn.close()
改
#导入pymysql模块
importpymysql#连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)#得到一个可以执行SQL语句的光标对象
cursor =conn.cursor()#修改数据的SQL语句
sql = "UPDATE USER1 SET age=%s WHERE name=%s;"username= "Alex"age= 80
try:#执行SQL语句
cursor.execute(sql, [age, username])#提交事务
conn.commit()exceptException as e:#有异常,回滚事务
conn.rollback()
cursor.close()
conn.close()
查
查询单条数据
#导入pymysql模块
importpymysql#连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)#得到一个可以执行SQL语句的光标对象
cursor =conn.cursor()#查询数据的SQL语句
sql = "SELECT id,name,age from USER1 WHERE id=1;"
#执行SQL语句
cursor.execute(sql)#获取单条查询数据
ret =cursor.fetchone()
cursor.close()
conn.close()#打印下查询结果
print(ret)
查询多条数据
#导入pymysql模块
importpymysql#连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)#得到一个可以执行SQL语句的光标对象
cursor =conn.cursor()#查询数据的SQL语句
sql = "SELECT id,name,age from USER1;"
#执行SQL语句
cursor.execute(sql)#获取多条查询数据
ret =cursor.fetchall()
cursor.close()
conn.close()#打印下查询结果
print(ret)
进阶用法
#可以获取指定数量的数据
cursor.fetchmany(3)#光标按绝对位置移动1
cursor.scroll(1, mode="absolute")#光标按照相对位置(当前位置)移动1
cursor.scroll(1, mode="relative")