0%

flask中使用数据库

Flask-SQLAlchemy扩展

Flask-SQLAlchemy是flask的一个ORM扩展框架,更方便的结合Flask,提供了高层的ORM和底层的原生数据库的操作,方便我们通过程序的方式操作数据表。

安装

使用pip install flask-sqlalchemy进行安装,若使用mysql还需要使用pip install flask-mysqldb安装mysqldb。由于python3中已经不再支持MySQLdb模块,所以我选用了pymysql,于是使用pip install pymysql安装。

设置

在config中加入以下设置:

1
2
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:xxxxx@localhost:3306/test?charset=utf8'
SQLALCHEMY_TRACK_MODIFICATIONS = False # 动态追踪修改设置,如未设置只会提示警告, 不建议开启

然后

1
2
app.config.from_object('config')
db = SQLAlchemy(app)

至此既已完成app和数据的关联,并生成一个可以操作app数据库的SQLAlchemy实例db

常用的SQLAlchemy字段类型

类型名 python中类型 说明
Integer int 普通整数,一般是32位
SmallInteger int 取值范围小的整数,一般是16位
BigInteger int或long 不限制精度的整数
Float float 浮点数
Numeric decimal.Decimal 普通整数,一般是32位
String str 变长字符串
Text str 变长字符串,对较长或不限长度的字符串做了优化
Unicode unicode 变长Unicode字符串
UnicodeText unicode 变长Unicode字符串,对较长或不限长度的字符串做了优化
Boolean bool 布尔值
Date datetime.date 时间
Time datetime.datetime 日期和时间
LargeBinary str 二进制文件

常用的SQLAlchemy列选项

选项名 说明
primary_key 如果为True,代表表的主键
unique 如果为True,代表这列不允许出现重复的值
index 如果为True,为这列创建索引,提高查询效率
nullable 如果为True,允许有空值,如果为False,不允许有空值
default 为这列定义默认值

常用的SQLAlchemy关系选项

选项名 说明
backref 在关系的另一模型中添加反向引用
primary join 明确指定两个模型之间使用的联结条件
uselist 如果为False,不使用列表,而使用标量值
order_by 指定关系中记录的排序方式
secondary 指定多对多中记录的排序方式
secondary join 在SQLAlchemy中无法自行决定时,指定多对多关系中的二级联结条件