Python 操作 MySQL 数据库(超全入门版)

Python 连接 MySQL 最常用的库是:pymysql(纯 Python)、mysql-connector-python(官方驱动)。下面以 pymysql 为主,从安装到增删改查一次性讲全。


一、安装驱动

bash

运行

pip install pymysql

二、基本流程

  1. 建立数据库连接
  2. 获取游标(cursor)
  3. 执行 SQL 语句
  4. 提交事务(增删改必须提交)
  5. 关闭游标 & 关闭连接

三、连接数据库

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"))

八、安全要点

  1. 禁止字符串拼接 SQL,必须用 %s 占位符,防止 SQL 注入
  2. 增删改必须 commit()
  3. 查询可用字典游标更方便
  4. 生产环境一定要加 try...except...finally

九、进阶:ORM 方式(Flask 常用)

如果不想写原生 SQL,可用:

  • SQLAlchemy
  • Flask 项目用 Flask-SQLAlchemy
Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐