1.1 闪消息 存储于 session 中,当在模板中显示了 闪消息后, 自动删除 session
中的闪消息数据
发送闪消息: flash("闪消息内容")
1.2 模板中显示 闪消息,并从 session 中删除该闪消息 (必须在模板中使用)
{% for message in get_flashed_messages() %}
{{ message }}
{% endfor %}
后端发送闪消息
# 存储信息到session 中
flash("用户名或密码错误,请重新登录")
# 重定向到前端 视图
return redirect(url_for("myblue.welcome_view"))
前端模板接收闪消息
<body>
{% for msg in get_flashed_messages() %}
{{ msg }}
{% endfor %}
</body>
给Flask 框架提供了 关系型数据库的通用操作
pip install flask-sqlalchemy
1. 通过shell 交互环境
python 启动文件 shell
2. 启动开发服务器使用
3. 使用步骤:
3.1 创建SQLALchemy对象:db = SQLAlchemy()
3.2 创建模型
3.3 创建程序实例,并设置数据库配置
3.4 操作数据库
# 创建模型
class Product(db.Model):
# 对应数据库表名称
__tablename__ = "products"
# 属性对应数据库表字段
id = db.Column(db.Integer,primary_key=True)
price = db.Column(db.Float)
address = db.Column(db.String(20))
# 创建程序实例,并设置数据库配置
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"]="mysql+pymysql://root:123456@localhost:3306/mydb?charset=utf8"
# 关闭记录数据操作数据库的功能
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
db.init_app(app) # app 与db 关联
# 操作数据库
# 创建表
db.create_all()
# 删除表
db.drop_all()
# 添加记录
db.session.add(模型对象)
db.session.commit()
# 添加多个模型对象
db.session.add_all([模型对象1,模型对象2])
# 删除某条记录
db.session.delete(product)
db.session.commit()
# 查询所有记录
模型类名称.query.all() # 查询结果时list
# 根据条件查询
模型类名称.query.filter_by(关键字参数) #查询结果时BaseQuery, BaseQuery 调用all() 返回list; 调用first() 返回模型对象
# 通过filter() 方法进行复杂查询
products = Product.query.filter(Product.name.startswith("产品")).all()
products = Product.query.filter(Product.name.startswith("产品")).first()
fruts = Fruit.query.filter(Fruit.name.endswith("子"))
# 通过get()方法 查询主键,返回模型对象
模型类名称.query.get(主键)
Product.query.get(1)
# 模型类 modes.py
class Student(db.Model):
__tablename__ = "students" # 映射的表名称
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
name = db.Column(db.String(20),nullable=False)
score = db.Column(db.Float,nullable=False)
# 数据库关联 flask应用程序 ext.py
db = SQLAlchemy()
def init_ext():
db.init_app(app) # 数据库关联 app
# 产生 flask 应用程序 __init__.py
def create_app():
app = Flask(__name__)
# 配置数据库连接信息
app.config["SQLALCHEMY_DATABASE_URL"]="mysql+pymysql://root:123456@localhost:3306/mydb?charset=utf8"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"]=False
init_ext(app)
return app
# 程序启动脚本 manager.py
app = create_app()
manager = Manaager(app)
if __name__ == "__main___":
manager.run()
1. 指定app 与 db, 目的是创建migrations 目录
migrate = Migrate(app,db)
manager = Manager(app)
2. 注册一个自定义的迁移命令
manager.add_command("nicedb",MigrateCommand) #注册命令
3. 迁移步骤:
第一步: 初始化迁移目录
python 启动脚本.py 注册命令 init
第二部: 制作迁移文件
python 启动脚本.py 注册命令 migrate
第三部: 迁移模型到数据库
python 启动脚本.py 注册命令 upgrade