Flask 使用 PyMySQL 连接数据库
在 Flask 中使用 PyMySQL 库连接数据库可以实现高效的数据库操作。以下是具体步骤:
- 安装必要的库
在开始之前,需要安装 Flask 和 PyMySQL:
pip install flask pymysql
2. 配置数据库连接
在 Flask 应用中,配置数据库连接字符串。以下是示例代码:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
配置 MySQL 数据库连接
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://用户名:密码@localhost:3306/数据库名?charset=utf8mb4'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False# 初始化 SQLAlchemy
db = SQLAlchemy(app)
注意事项:
替换 用户名、密码 和 数据库名 为实际值。
确保 MySQL 服务已启动,并且字符集设置为 utf8mb4。
- 定义数据模型
使用 SQLAlchemy 定义数据表模型。例如,创建一个用户表:
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)def __repr__(self):
return f'<User {self.username}>'
- 创建数据库表
通过以下命令将模型映射到数据库中:
with app.app_context():
db.create_all()
- 数据库操作示例
以下是增删改查的基本操作:
添加数据:
new_user = User(username='test_user', email='test@example.com')
db.session.add(new_user)
db.session.commit()
查询数据:
users = User.query.all() # 查询所有用户
user = User.query.filter_by(username='test_user').first() # 条件查询
更新数据:
user = User.query.get(1) # 获取 ID 为 1 的用户
user.email = 'new_email@example.com'
db.session.commit()
删除数据:
user = User.query.get(1)
db.session.delete(user)
db.session.commit()
- 常见问题及解决方案
无法连接 MySQL: 检查 MySQL 服务是否启动,确保端口号(默认 3306)开放。
字符集错误: 在连接字符串中添加 ?charset=utf8mb4。
模型与表结构不一致: 使用 flask db migrate 和 flask db upgrade 更新表结构。
通过以上步骤,您可以成功在 Flask 中使用 PyMySQL 连接并操作 MySQL 数据库。