Flask 中最方便用的数据库框架是 flask_sqlalchamy,是对 SQLAlchamy 在 Flask 中的扩展, SQLAlchemy 是一个 Python 数据库工具(ORM,即对象关系映射)。
借助 SQLAlchemy,通过定义 Python 类来表示数据库里的一张表(类属性表示表中的字段 或者 列),通过对这个类进行各种操作来代替写 SQL 语句。这个类我们称之为模型类,类中的属性我们将称之为字段。
SQLAlchemy 支持多种数据库,对于不同的数据库只需要修改下配置链接就可以,在这里我们使用关系型数据库 SQLite 作为演示。
pip install flask_sqlalchamy
安装之后,导入到项目中,对应用进行初始化:
from flask import Flask
from flask_sqlalchamy import SQLAlchamy # 导入 SQLAlachamy
app = Flask(__name__) # 创建 Flask 应用
db = SQLAlchamy(app) # 初始化应用
数据库一般作为第三方应用,需要通过建立与数据库的连接,让应用可以是使用数据库。
常见的数据库有 MySql、SqlServer、Oracle、SQLite、MongoDB 等等,每种数据库都有自己特定的连接格式,我们使用的是简单的 SQLite 数据库,它的连接格式是:
sqlite:数据库文件的绝对地址
注意: 如果您使用 Windows 系统,上面的 URI 前缀部分需要写入三个斜线 (即 sqlite:///)
在例子中,将数据库文件路径设置为当前应用的根目录下:
import os
# ...
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:' + os.path.join(app.root_path, 'data.db')
注意: 为了设置 Flask、扩展或是我们程序本身的一些行为,需要设置和定义一些配置变量。Flask 提供了一个统一的接口来写入和获取这些配置变量:Flask.config 字典。配置变量的名称必须使用大写,写入配置的语句一般会放到扩展类实例化语句之前。app.config 是一种简便的 Flask 应用的配置方式
模型简单来说就是数据库中的一张表定义,需要有名称,字段,在 Python 中用一个类来表示,由于需要和数据库的表对应,模型必须继承自 SQLAlchamy 的 Model 类
在初始化应用中,我们得到一个 SQLAlchamy 的实例 db,定义模型都是继承自实例的 Model 类的
下面定义一个 Profile 模型,用来记录一个用户的基本信息:
class Profile(db.Model):
id = db.Column(db.Integer, primary_key=True) # 主键
name = db.Column(db.String(20))
birthday = db.Column(db.Date())
createtime = db.Column(db.DateTime())
about = db.Column(db.Text())
-
模型中的属性,都是有 Column 类的一个实例,传入的参数为字段的类型,下面的表格列出了常用的字段类
-
在 db.Column() 中添加额外的选项(参数)可以对字段进行设置。比如,primary_key 设置当前字段是否为主键。除此之外,常用的选项还有 nullable(布尔值,是否允许为空值)、index(布尔值,是否设置索引)、unique(布尔值,是否允许重复值)、default(设置默认值)等
-
当一个列被设置为主键,默认主键值是自增长的