知识点: 一、数据库配置 二、字段选项 三、约束字段 四、关系选择python
在Django框架中内部已经提供ORM这样的框架,来实现对象关系映射,方便咱们操做数据库。若是想在Flask中也达到这样效果,须要安装一个第三方来支持。mysql
SQLAlchemy是一个关系型数据库框架,它提供了高层的ORM和底层的原生数据库的操做。flask-sqlalchemy是一个简化了SQLAlchemy操做的flask扩展。sql
在Flask安装:数据库
pip install flask-sqlalchemy
复制代码
要链接数据还须要安装pymysqlflask
pip install pymysql
复制代码
首先咱们要知道本地数据库的帐号密码。并须要建立一个数据库:app
create database db_flask charset=utf8;
复制代码
在项目中数据库链接和经常使用配置:框架
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysql
pymysql.install_as_MySQLdb()
app = Flask(__name__)
# 设置链接数据库的URL
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:123456@127.0.0.1:3306/db_flask'
# 数据库和模型类同步修改
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
# 查询时会显示原始SQL语句
app.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(app)
复制代码
支持的数据库类型:优化
类型 | 对应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 | 二进制文件 |
支持的数据库约束:spa
选项 | 说明 |
---|---|
primary_key | 若是为True,表明表的主键 |
unique | 若是为True,表明这列不容许出现重复的值 |
index | 若是为True,为这列建立索引,提升查询效率 |
nullable | 若是为True,容许有空值,若是为False,不容许有空值 |
default | 为这列定义默认值 |
选项 | 说明 |
---|---|
backref | 在关系的另外一模型中添加反向引用 |
primary join | 明确指定两个模型之间使用的联结条件 |
uselist | 若是为False,不使用列表,而使用标量值 |
order_by | 指定关系中记录的排序方式 |
secondary | 指定多对多中记录的排序方式 |
secondary join | 在SQLAlchemy中没法自行决定时,指定多对多关系中的二级联结条件 |
欢迎关注个人公众号:code