博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flask框架从入门到精通之模型数据库配置(十一)
阅读量:6293 次
发布时间:2019-06-22

本文共 1565 字,大约阅读时间需要 5 分钟。

知识点: 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 Flaskfrom flask_sqlalchemy import SQLAlchemyimport pymysqlpymysql.install_as_MySQLdb()app = Flask(__name__)# 设置连接数据库的URLapp.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'] = Truedb = 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 二进制文件

五、约束类型

支持的数据库约束:

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

六、关系选项

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

欢迎关注我的公众号:

转载于:https://juejin.im/post/5cc7f9e56fb9a0324936c0a5

你可能感兴趣的文章
微软云数据库 Azure SQL DB Hyperscale如何实现超大规模存储和高可用?
查看>>
十年中文技术社区风雨之路 今晚4位老炮畅聊过去未来
查看>>
微软发起Java on Azure调查,呼吁Java社区积极参与
查看>>
SignalR Core尝鲜
查看>>
举重若轻的人人车移动端数据平台
查看>>
Swift 4.1增强了泛型、编译器和包管理器
查看>>
太多脚本将会毁掉持续交付
查看>>
应用性能监控方法一览
查看>>
宕机的阿里云们正在杀死运维?
查看>>
解密新一代Java JIT编译器Graal
查看>>
从数据中心基础设施的视角来看 Facebook 机器学习的应用
查看>>
座谈会:Apache基金会那些事儿
查看>>
如何在 Kubernetes 中对无状态应用进行分批发布
查看>>
Oracle计划新的移动OpenJDK项目
查看>>
Phantom.js维护者退出,项目的未来成疑
查看>>
Datical为数据库添加持续交付能力
查看>>
当中台遇上DDD,我们该如何设计微服务?
查看>>
2016年云巴产品更新合集
查看>>
央视在世界杯高清直播中占了C位 它是怎么做到的?
查看>>
新书问答:Company-Wide Agility
查看>>