数据模型
数据操作
- 传统的执行原生SQL语句,每次都需要拼接SQL语句,比较繁琐且容易出错。
- ORM(对象关系映射),可以通过对对象的函数调用完成数据的增删改查。
- Flask中没有提供ORM,但是扩展库Flask-SQLAlchemy可以非常完美的解决此问题。
基本使用:
from flask_sqlalchemy import SQLAlchemy
# 配置数据库连接地址
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@127.0.0.1:3306/model'
# 数据表的更改追踪,需要消耗额外的资源,不需要可以关闭
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 创建数据库操作对象
db = SQLAlchemy(app)
# 设计模型类
class User(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(20), unique=True, nullable=False)
email = db.Column(db.String(32), unique=True, nullable=False)
数据管理
# 创建数据表
@app.route('/create_all/')
def create_all():
# 会根据模型自动生成数据表
db.create_all()
return '数据表已生成'
# 删除数据表
@app.route('/drop_all/')
def drop_all():
db.drop_all()
return '数据表已删除'
# 添加终端操作命令(函数名就是命令):创建数据表
@manager.command
def createall():
db.drop_all()
db.create_all()
return '数据表已创建'
# 添加终端操作命令(函数名就是命令):删除数据表
@manager.command
def dropall():
if prompt_bool('您确定要删库跑路吗?'):
db.drop_all()
return '数据表已删除'
return '删库有风险,操作需谨慎!'
终端命令:python manage.py createall
相关推荐
- 上述的方式解决数据迁移问题不够优雅,治标不治本,而且副作用比较大,只有删除后才能重新生成
- 使用扩展库Flask-Migrate可以优雅的解决数据库迁移问题