美文网首页
flask 数据库操作

flask 数据库操作

作者: kizi | 来源:发表于2019-05-09 10:09 被阅读0次

    首先创建一个model的 基类(自己定义)

    from flask_sqlalchemy import SQLAlchemy
    from sqlalchemy import Column, SmallInteger
    
    db = SQLAlchemy()
    
    
    class Base(db.Model):
        __abstract__ = True
        status = Column(SmallInteger, default=1)
    

    或者 你可以 在 models 文件夹下 创建 ____init____.py 文件 例如:

    from flask_sqlalchemy import SQLAlchemy
    
    __all__ = ['book']
    db = SQLAlchemy()
    
    from app.models import *
    
    

    这样有助于在 app 的 ____init___.py 文件下初始化 整个项目的时候 在 db.create_all(app=app)的时候 不需要全部导入各个模板类图映射数据表, 就可以在数据库中创建所有表 只要在 models/____init___.py 的文件下 的 ____all____ = [ ] 中 输入 你想导出的文件。 如下为 app/___init____.py 文件下代码:

    from flask import Flask
    #  这一步很关键 会导入 models/__init__.py 文件 从而导出了 所有我想导出的 数据表文件
    from app.models import db
    
    
    def create_app():
        app = Flask(__name__)
        app.config.from_object('app.secure')
        app.config.from_object('app.setting')
        register_blueprint(app)
        db.init_app(app)
        db.create_all(app=app)
        return app
    
    
    def register_blueprint(app):
        from app.web import web
        app.register_blueprint(web)
    
    

    数据库迁移

    需要预先安装 flask-migrate 和 flask-script 包

    需要执行自己定义的 python 脚本文件 通过 shell 执行

    自定义脚本文件 manage.py 如下:

    from flask import Flask
    from flask_migrate import Migrate, MigrateCommand
    from flask_script import Manager
    
    from fisher import app
    
    from app.models.base import db
    from app.models.user import User
    
    migrate = Migrate(app, db)
    manager = Manager(app)
    manager.add_command('db', MigrateCommand)
    
    
    if __name__ == '__main__':
        manager.run()
    

    这里可以将db 放入model/下的 ____init____.py 文件 并在该文件下 导出自己想导出的数据表文件 这样就可以不需要在该脚本文件下 去一一导入自己需要操作的数据表文件

    执行如下命令

    python manage.py db init #初始化,工程目录下生成一个migrations文件夹
    python mange.py db migrate 生成迁移文件操作
    python manage.py db upgrade 更新到数据库中操作
    python manage.py db downgrade d303dfaaefba 迁移回滚到自己想要的迁移版本 d303dfaaefba 为你的迁移文件的名称 不要后面的 _

    相关文章

      网友评论

          本文标题:flask 数据库操作

          本文链接:https://www.haomeiwen.com/subject/bieioqtx.html