Flask框架从入门到精通之模型数据库配置

Posted 小_源

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask框架从入门到精通之模型数据库配置相关的知识,希望对你有一定的参考价值。

知识点:
1、数据库配置
2、字段选项
3、约束字段
4、关系选择

一、概况

在Django框架中内部已经提供ORM这样的框架,来实现对象关系映射,方便我们操作数据库。如果想在Flask中也达到这样效果,需要安装一个第三方来支持。

SQLAlchemy是一个关系型数据库框架,它提供了高层的ORM和底层的原生数据库的操作。flask-sqlalchemy是一个简化了SQLAlchemy操作的flask扩展。

二、安装

在Flask安装:

pip install flask-sqlalchemy

要连接数据还需要安装pymysql

pip install pymysql

三、连接数据库

首先我们要知道本地数据库的账号密码。并需要创建一个数据库:

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中说明
Integerint普通整数,一般是32位
SmallIntegerint取值范围小的整数,一般是16位
BigIntegerint或long不限制精度的整数
Floatfloat浮点数
Numericdecimal.Decimal普通整数,一般是32位
Stringstr变长字符串
Textstr变长字符串,对较长或不限长度的字符串做了优化
Unicodeunicode变长Unicode字符串
UnicodeTextunicode变长Unicode字符串,对较长或不限长度的字符串做了优化
Booleanbool布尔值
Datedatetime.date时间
Timedatetime.datetime日期和时间
LargeBinarystr二进制文件

五、约束类型

支持的数据库约束:

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

六、关系选项

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

以上是关于Flask框架从入门到精通之模型数据库配置的主要内容,如果未能解决你的问题,请参考以下文章

Flask框架从入门到精通之模型迁移操作(十六)

Flask框架从入门到精通之模型查询(十三)

Flask框架从入门到精通之模型查询(十三)

Flask框架从入门到精通之模型创建与添加

Flask框架从入门到精通之模型创建与添加

Flask框架从入门到精通之模型关系(十七)