SQLAlchemy在Flask中的应用
记录SQLAlchemy在Flask中的应用
install
上文写到使用ORM进行快速开发,本文简述ORM在Flask
开发中的应用。sqlalchemy
可以直接用于Flask
中,但通过Flask-SQLAlchemy
模块,可以很好地把sqlalchemy
模块嵌入到Flask
的上下文中。
关于ORM的基本概念和sqlalchemy
模块参考旧文使用ORM进行快速开发。
本文需要使用到的模块:
1 | pip3 install -U flask |
初步使用
首先我们需要sqlalchemy
在Flask
中初始化。SQLAlchemy
对象会自动从app
实例中获取配置信息,管理数据库连接。
在Config
类中指定SQLAlchemy
的配置信息。SQLALCHEMY_DATABASE_URI
指定数据库的URL路径,上面说过。SQLALCHEMY_ECHO
是布尔类型,表明是否把和数据库交互的信息打印出来。
1 | from flask_sqlalchemy import SQLAlchemy |
db对象包括了定义数据库模型时字段的类型信息,常见的类型如下。
- db.Integer
- db.String
- db.Float
- db.Text
- db.Boolean
- db.Date
- db.DateTime
其中前三个类可以接收一个参数,表示存储长度的大小。Integer默认的长度为11。
创建第一个模型,新的模型继承自db.Model
。db.Model
常用的参数有两个,第一个参数指定字段的名字,第二个参数指定字段在数据库中的类型信息。通常第一个字段如果省略,SQLAlchemy
会自动把当前类的属性名当做数据库的字段名字。
1 | class User(db.Model): |
由于上面的User
模型中Column
都指定字段名,因此SQLAlchemy
就把id
、username
、password
分别作为数据库的字段名字。
创建表
通过db.create_all()
创建我们定义的模型到数据库中。在交互模式下(例如白跑一趟hon)运行上面的代码,然后输入如下代码。
1 | >>> db.drop_all() # 删除数据库中的表 |
实际上,上述模型对应的SQL
代码如下
1 | CREATE TABLE `user` ( |
我们可以对比这段SQL
代码和上面定义的User
类,感受它们之间的映射关系。
操作例子
基于sqlalchemy
模块的CRUD在使用ORM进行快速开发一文已经提到。这部分讲讲添加、读取、修改、删除在Flask
中的运用。这四类数据库操作都是建立在会话(session)上,它由SQLAlchemy
对象维护着。接下来的代码实例假定在交互式(如IDLE、bpython3)上完成。
添加一个数据对象
1 | 'allen', password='******') user = User(username= |
添加多个数据对象
1 | for name in ('allen', 'allenwind')] users = [user(username=name) |
转载请包括本文地址:https://allenwind.github.io/blog/4677
更多文章请参考:https://allenwind.github.io/blog/archives/