SQLAlchemy构建使用
连接池
python语言下的开源软件,提供了SQL工具包即对象映射ORM工具。它可以高效高性能访问数据库设计,
是在flask框架的一个扩展,python社区内应用最广的ORM工具之一。
配置
# 安装
pip install flask-sqlalchemy
# 如果用mysql, 还需安装mysql客户端库
pip install mysqlclient
连接设置
# 创建简单配置信息
app = Flask(__name__)
class Config(object):
SQLALCHEMY_DATABASE_URI = '数据库连接信息'
SQLALCHEMY_TRACK_MODIFICATIONS = False # flask中是否追踪数据修改
SQLALCHEMY_ECHO = True # 显示生成的sql语句, 可以用于调试
app.config.from_object(Config)
其他配置参考
SQLALCHEMY_DATABASE_URI # 用于连接的数据库 URI 。
SQLALCHEMY_BINDS # 一个映射 binds 到连接 URI 的字典。
SQLALCHEMY_ECHO # Ture == 记录所有发给 stderr 的语句,打印sql语句
SQLALCHEMY_RECORD_QUERIES # 可以用于显式地禁用或启用查询记录。
SQLALCHEMY_NATIVE_UNICODE # 可以用于显式禁用原生 unicode 支持。
SQLALCHEMY_POOL_SIZE # 数据库连接池的大小。默认是引擎默认值(通常 是 5 )
SQLALCHEMY_POOL_TIMEOUT # 设定连接池的连接超时时间。默认是 10 。
SQLALCHEMY_POOL_RECYCLE # 多少秒后自动回收连接。它默认移除闲置多于8小时
'''
这对MySQL是必要的,它默认移除闲置多于 8 小时的连接。注意如果使用了MySQL,Flask-SQLALchemy自动设定这个值为 2 小时。
'''
调用方式
# 创建对象
app = Flask(__name__)
db = SQLAlchemy(app)
# 先有db, 后有app --> init_app
db = SQLAlchemy()
app = Flask(__name__)
db.init_app(app) # 后加载
#
with app.app_context():
User.query.all()
模型类映射构建
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
db = SQLAlchemy(app)
class User(db.Model): # 继承Model
"""
用户表映射构建
"""
__tablename__ = 'user_basic' # 保证表名、字段名、类型一致
class STATUS: # 枚举常量
ENABLE = 1
DISABLE = 0
# 格式 --> 名称 = db.Column('数据库字段名', db.字段类型, doc='描述信息')
# 名称 与 '数据库字段名' 一致时, 可省略
id = db.Column('user_id', db.Integer, primary_key=True, doc='用户ID')
mobile = db.Column(db.String, doc='手机号') # 若用迁移, 必加长度String()
password = db.Column(db.String, doc='密码')
name = db.Column('user_name', db.String