Flask - SQLAlchemy

要使用 Flask-SQLAlchemy 首先还是要通过 pip 来安装:

pip install Flask-SQLAlchemy

一个简单的例子,我们新建一个 db_app.py 文件,写入以下代码:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return '' % self.username

接下来我们需要从交互式 Python shell (或者 ipython)导入我们创建的 db 和 User,来实现创建数据库,创建数据表,增删查改等一系列操作。

创建数据库和数据表:
>>> from db_app import db
>>> db.create_all()

这将会在根目录创建一个 test.db 的 sqlite3 数据库文件,并创建 User 数据表。

创建用户
>>> from db_app import User
>>> admin = User(username='admin', email='[email protected]')
>>> guest = User(username='guest', email='[email protected]')
写入数据库
>>> db.session.add(admin)
>>> db.session.add(guest)
>>> db.session.commit()
查询数据
>>> User.query.all()
[, ]

>>> User.query.filter_by(username='admin').first()

自定义 init 方法

可以看到我们的 User 类并不需要定义 __init__() 方法来初始化,因为继承的 db.Model 类已经隐含了这一切,如果我们需要自己的__init__() 方法,可以这样做:

class Foo(db.Model):
    # ...
    def __init__(**kwargs):
        super(Foo, self).__init__(**kwargs)
        # do custom stuff




Column 字段类型参考:

字段 含义
Integer 一个整数
String (size) 有长度限制的字符串
Text 一些较长的 unicode 文本
DateTime 表示为 Python datetime 对象的 时间和日期
Float 存储浮点值
Boolean 存储布尔值
PickleType 存储为一个持久化的 Python 对象
LargeBinary 存储一个任意大的二进制数据

其余的参数指定属性的配置选项,常用的配置选项如下:

字段 含义
primarykey 如果设为True,表示主键
unique 如果设为True,这列不重复
index 如果设为True,创建索引,提升查询效率
nullable 如果设为True,允许空值
default 为这列定义默认值




本文源码:https://github.com/SingleDiego/Flask-SQLAlchemy

你可能感兴趣的:(Flask - SQLAlchemy)