要使用 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 '<User %r>' % 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='admin@example.com')
>>> guest = User(username='guest', email='guest@example.com')
写入数据库
>>> db.session.add(admin)
>>> db.session.add(guest)
>>> db.session.commit()
查询数据
>>> User.query.all()
[<User u'admin'>, <User u'guest'>]
>>> User.query.filter_by(username='admin').first()
<User u'admin'>
自定义 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 | 为这列定义默认值 |
网友评论