Flask类似Django操作MySQL时的相关配置及命令

摘要

  • 快速将flask和mysql建立命令管理关系
  • 命令行一共五个,在代码片的末端
  • 补充django生成迁移表及迁移文件的命令

# coding:utf-8

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

from flask_script import Manager  # 脚本管理员
from flask_migrate import MigrateCommand, Migrate  # 前后者:命令(需要注册给管理员对象)和执行命令的迁移者


app = Flask(__name__)


class Config(object):
    # sqlalchemy的配置参数
    SQLALCHEMY_DATABASE_URI = "mysql://root:[email protected]:3306/sdy_author"

    # 设置sqlalchemy自动更跟踪数据库
    SQLALCHEMY_TRACK_MODIFICATIONS = True

    SECRET_KEY = "doiso7fd89fyd9^(fsd"


app.config.from_object(Config)

# 创建数据库对象db
db = SQLAlchemy(app)

# 创建启动命令管理对象
manager = Manager(app)

# 创建数据库迁移工具对象
Migrate(app, db)

# 向启动命令管理对象中添加迁移命令  这里的"db" 是给添加进去的命令起的名字是什么,和数据库对象db是没有关系的
manager.add_command("db", MigrateCommand)


# 定义数据库的模型
class Author(db.Model):
    """作者"""
    __tablename__ = "tbl_authors"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32), unique=True)
    books = db.relationship("Book", backref="author")
    email = db.Column(db.String(128), unique=True)


class Book(db.Model):
    """书籍"""
    __tablename__ = "tbl_books"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    leader = db.Column(db.String(32))
    author_id = db.Column(db.Integer, db.ForeignKey("tbl_authors.id"))



if __name__ == '__main__':

    manager.run()


# python xxx.py db init 初始化,生成文件夹
# python xxx.py db migrate  # 等价django中的生成迁移文件  -m "备注信息"
# python xxx.py db upgrade # 生成迁移表 (会生成关于表版本信息的alembic_version表)
# python xxx.py db history  # 查看历史信息
# python xxx.py db downgrade be9c9cb8bd12 # 回退版本(需要在历史信息中查看版本对应信息)


补充:django生成迁移文件及迁移表的命令

生成迁移文件:python manage.py makemigrations
生成迁移文件: python manage.py migrate
发布了55 篇原创文章 · 获赞 3 · 访问量 2743

猜你喜欢

转载自blog.csdn.net/rusi__/article/details/102914642