数据模型

数据操作

  • 传统的执行原生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可以优雅的解决数据库迁移问题

results matching ""

    No results matching ""