前言
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2 中则使用 mysqldb。PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库
一、安装
pip3 install PyMySQL
二、数据库连接
# !/usr/bin/python3
import pymysql
db = pymysql.connect(
host="localhost",
user='root',
password='tamigroup'
)
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print("Database version : %s " % data)
# 关闭数据库连接
db.close()
输出结果如下:
Database version : 8.0.28
三、创建数据库
# !/usr/bin/python3
import pymysql
mydb = pymysql.connect(
host="localhost",
user="root",
passwd="tamigroup"
)
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE pymysql_db")
# 关闭数据库连接
db.close()
四、创建数据表
# !/usr/bin/python3
import pymysql
conn = pymysql.connect(
host="localhost",
user='root',
password='tamigroup',
database="pymysql_db"
)
mycursor = conn.cursor()
mycursor.execute("CREATE TABLE sites (name VARCHAR(255), url VARCHAR(255))")
# 关闭数据库连接
db.close()
五、插入数据
#!/usr/bin/python3
import pymysql
# 打开数据库连接
db = pymysql.connect(
host="localhost",
user='root',
password='tamigroup',
database="pymysql_db"
)
mycursor = db.cursor()
sql = "INSERT INTO sites (name, url) VALUES (%s, %s)"
val = ("RUNOOB", "https://www.runoob.com")
try:
# 执行sql语句
mycursor.execute(sql, val)
# 提交到数据库执行
db.commit()
except:
# 如果发生错误则回滚
db.rollback()
# 关闭数据库连接
db.close()
六、查询数据
# !/usr/bin/python3
import pymysql
# 打开数据库连接
db = pymysql.connect(
host="localhost",
user='root',
password='tamigroup',
database="pymysql_db"
)
mycursor = db.cursor()
mycursor.execute("SELECT * FROM sites")
myresult = mycursor.fetchall() # fetchall() 获取所有记录
for x in myresult:
print(x)
# 关闭数据库连接
db.close()
七、更新表数据
# !/usr/bin/python3
import pymysql
# 打开数据库连接
db = pymysql.connect(
host="localhost",
user='root',
password='tamigroup',
database="pymysql_db"
)
mycursor = db.cursor()
sql = "UPDATE sites SET name = %s WHERE name = %s"
val = ("RB", "RUNOOB")
mycursor.execute(sql, val)
db.commit()
print(mycursor.rowcount, " 条记录被修改")
# 关闭数据库连接
db.close()
八、删除表
# !/usr/bin/python3
import pymysql
# 打开数据库连接
db = pymysql.connect(
host="localhost",
user='root',
password='tamigroup',
database="pymysql_db"
)
mycursor = db.cursor()
sql = "DROP TABLE IF EXISTS sites" # 删除数据表 sites
mycursor.execute(sql)
# 关闭数据库连接
db.close()
九、执行事务
- 事务机制可以确保数据一致性。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
- 对于支持事务的数据库, 在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。
- Python DB API 2.0 的事务提供了两个方法 commit 或 rollback。commit()方法游标的所有更新操作,rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。
十、错误处理
DB API中定义了一些数据库操作的错误及异常,如下: