Python操作MySQL数据库
·
Python 操作 MySQL 数据库(超全入门版)
Python 连接 MySQL 最常用的库是:pymysql(纯 Python)、mysql-connector-python(官方驱动)。下面以 pymysql 为主,从安装到增删改查一次性讲全。
一、安装驱动
bash
运行
pip install pymysql
二、基本流程
- 建立数据库连接
- 获取游标(cursor)
- 执行 SQL 语句
- 提交事务(增删改必须提交)
- 关闭游标 & 关闭连接
三、连接数据库
python
运行
import pymysql
# 建立连接
conn = pymysql.connect(
host='localhost', # 主机
port=3306, # 端口
user='root', # 用户名
password='你的密码', # 密码
database='testdb', # 数据库名
charset='utf8mb4' # 编码
)
# 获取游标
cursor = conn.cursor()
# 后续操作...
# 关闭
cursor.close()
conn.close()
四、查询操作(SELECT)
1. 查询一条
python
运行
sql = "SELECT id, name, age FROM user WHERE id = %s"
cursor.execute(sql, (1,))
# 获取一条
data = cursor.fetchone()
print(data) # (1, '张三', 20)
2. 查询多条
python
运行
sql = "SELECT * FROM user"
cursor.execute(sql)
# 获取所有
all_data = cursor.fetchall()
for row in all_data:
print(row)
3. 获取字段名(返回字典)
python
运行
# 字典游标
cursor = conn.cursor(pymysql.cursors.DictCursor)
cursor.execute("SELECT * FROM user")
data = cursor.fetchall()
print(data)
# [{'id':1, 'name':'张三', 'age':20}, ...]
五、增删改(必须 commit)
1. 插入 INSERT
python
运行
sql = "INSERT INTO user(name, age) VALUES (%s, %s)"
cursor.execute(sql, ('李四', 22))
# 提交事务!!!
conn.commit()
print("插入成功,ID:", cursor.lastrowid)
2. 批量插入
python
运行
sql = "INSERT INTO user(name, age) VALUES (%s, %s)"
data_list = [
('王五', 23),
('赵六', 24)
]
cursor.executemany(sql, data_list)
conn.commit()
3. 更新 UPDATE
python
运行
sql = "UPDATE user SET age = %s WHERE id = %s"
cursor.execute(sql, (25, 1))
conn.commit()
4. 删除 DELETE
python
运行
sql = "DELETE FROM user WHERE id = %s"
cursor.execute(sql, (1,))
conn.commit()
六、异常处理(必备)
python
运行
import pymysql
try:
conn = pymysql.connect(...)
cursor = conn.cursor()
sql = "INSERT INTO ..."
cursor.execute(sql, (...))
conn.commit()
except Exception as e:
# 出错回滚
conn.rollback()
print("错误:", e)
finally:
cursor.close()
conn.close()
七、常用封装(工具类)
python
运行
import pymysql
class MySQLHelper:
def __init__(self):
self.conn = pymysql.connect(
host='localhost',
user='root',
password='123456',
database='testdb',
charset='utf8mb4'
)
def query_one(self, sql, params=None):
with self.conn.cursor() as c:
c.execute(sql, params)
return c.fetchone()
def query_all(self, sql, params=None):
with self.conn.cursor() as c:
c.execute(sql, params)
return c.fetchall()
def execute(self, sql, params=None):
with self.conn.cursor() as c:
c.execute(sql, params)
self.conn.commit()
def __del__(self):
self.conn.close()
使用:
python
运行
db = MySQLHelper()
db.execute("INSERT INTO user(name) VALUES(%s)", ("测试",))
print(db.query_all("SELECT * FROM user"))
八、安全要点
- 禁止字符串拼接 SQL,必须用
%s占位符,防止 SQL 注入 - 增删改必须
commit() - 查询可用字典游标更方便
- 生产环境一定要加
try...except...finally
九、进阶:ORM 方式(Flask 常用)
如果不想写原生 SQL,可用:
- SQLAlchemy
- Flask 项目用 Flask-SQLAlchemy
更多推荐



所有评论(0)