Web 应用离不开数据存储,今天就来学习下 Flask 中如何与数据库交互,最后我们将做一个提交的实例
Flask 中最方便用的数据库框架是 flask_sqlalchamy,是对 SQLAlchamy 在 Flask 中的扩展, SQLAlchemy 是一个 Python 数据库工具(ORM,即对象关系映射)。
借助 SQLAlchemy,通过定义 Python 类来表示数据库里的一张表(类属性表示表中的字段 或者 列),通过对这个类进行各种操作来代替写 SQL 语句。这个类我们称之为模型类,类中的属性我们将称之为字段。
SQLAlchemy 支持多种数据库,对于不同的数据库只需要修改下配置链接就可以,在这里我们使用关系型数据库 SQLite 作为演示。
SQLite 是基于文件的关系型数据库,不需要单独启动数据库服务器,适合在开发时使用,或是在数据库操作简单、访问量低的程序中使用。
安装 flask_sqlalchamy
pip install flask_sqlalchamy
安装之后,导入到项目中,对应用进行初始化:
from flask import Flask
from flask_sqlalchamy import SQLAlchamy # 导入 SQLAlachamy
app = Flask(__name__) # 创建 Flask 应用
db = SQLAlchamy(app) # 初始化应用
设置数据库连接 URI
数据库一般作为第三方应用,需要通过建立与数据库的连接,让应用可以是使用数据库。
常见的数据库有 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