ORM
创建模型
# exts.py:插件管理
# 扩展的第三方插件
# 1.导入第三方插件
from flask_sqlalchemy import SQLAlchemy # ORM插件
from flask_migrate import Migrate
# 2. 初始化
db = SQLAlchemy() # ORM
migrate = Migrate() # 数据迁移
# 3. 和app对象绑定
def init_exts(app):db.init_app(app=app)migrate.init_app(app=app, db=db)
# __init__.py :初始化文件,创建Flask应用
from flask import Flask
from .views import blue
from .exts import init_exts
def create_app():app = Flask(__name__)# 注册蓝图app.register_blueprint(blueprint=blue)# 配置数据库db_uri = 'sqlite:///sqlite3.db'# db_uri = 'mysql+pymysql://root:123456@localhost:3306/flaskdb' # mysql的配置app.config['SQLALCHEMY_DATABASE_URI'] = db_uriapp.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # 禁止对象追踪修改# 初始化插件init_exts(app=app)return app
# models.py : 模型,数据库
from .exts import db# 模型 数据库
# 类 ==> 表结构
# 类属性 ==> 表字段
# 一个对象 ==> 表的一行数据# 模型Model:类
# 必须继承 db.Model
class User(db.Model):# 表名__tablename__ = 'tb_user'# 定义表字段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=1)sex = db.Column(db.Boolean, default=True)salary = db.Column(db.Float, default=100000, nullable=False)salary2 = db.Column(db.Float, default=100000, nullable=False)# db.Column : 表示字段
# db.Integer:表示整数
# primary_key=True : 主键
# autoincrement=True : 自动递增
# db.String(30): varchar(30) 可变字符串
# unique=True : 唯一约束
# index=True : 普通索引
# default=1 : 默认值
# nullable=False : 是否允许为空
数据迁移
模型操作
字段类型与约束
单表增删改查操作
# model.py
from .exts import db
# 类 => 表
# 类属性 => 表字段
# 对象 => 表的一条数据
class User(db.Model):__tablename__ = 'user' # 表名id = db.Column(db.Integer, primary_key=True, autoincrement=True)name = db.Column(db.String(30), unique=True)age = db.Column(db.Integer, default=1)def __repr__(self):return self.name
from flask import Blueprint, request, render_template
from sqlalchemy import desc, and_, not_