插件
pip install flask-sqlalchemy
pip install flask-migrate
pip install pymysql
绑定
exts.py
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
db = SQLAlchemy()
migrate = Migrate()
def init_exts(app):
db.init_app(app=app)
migrate.init_app(app=app, db=db)
init.py
db_uri = 'sqlite:///sqlite3.db'
app.config['SQLALCHEMY_DATABASE_URI'] = db_uri
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
init_exts(app=app)
定义表
models.py
# 按以下格式定义字段和约束
# 字段类型
# Integer int 普通整数, 一般是 32 位
# SmallInteger int 取值范围小的整数,一般是 16 位
# BigInteger int 或 long 不限制精度的整数
# Float float 浮点数
# Numeric decimal.Decimal 定点数
# String str 变长字符串
# Text str 长字符串,对较长或不限长度的字符串做了优化
# Unicode unicode 变长 Unicode 字符串
# UnicodeText unicode 变长 Unicode 字符串,对较长或不限长度的字符串做了优化
# Boolean bool 布尔值
# Date datetime.date 日期
# Time datetime.time 时间
# DateTime datetime.datetime 日期和时间
# Interval datetime.timedelta 时间间隔
# LargeBinary str 二进制文件
# 常用约束
# primary_key
# autoincrement
# unique
# default
# index
from .exts import db
class User(db.Model): #必须继承db.Model
__tablename__ = 'tb_users'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(30), unique=True, index=True)
age = db.Column(db.Integer, default=18)
sex = db.Column(db.Boolean, default=True)
salary = db.Column(db.Float, default=3000, nullable=False)
模型迁移
flask db init #初始化,只在项目最开始调用一次
flask db migrate #生成迁移文件
flask db upgrade #执行迁移文件中的升级
flask db downgrade #执行迁移文件中的降级
增删改查
# 增
u = User()
u.name = name
u.age = age
db.session.add(u)
db.session.commit()
# 删
db.session.delete(u)
db.session.commit()
# 查
User.query.all()#返回所有
User.query.get(key)#返回主键对象
User.query.filter(condition)#返回满足条件的查询集合,可以继续查询
# 改
#对查到的对象直接修改属性即可
嗯,就这些了