flask 數(shù)據(jù)庫操作

首先創(chuàng)建一個(gè)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 文件夾下 創(chuàng)建 ____init____.py 文件 例如:

from flask_sqlalchemy import SQLAlchemy

__all__ = ['book']
db = SQLAlchemy()

from app.models import *

這樣有助于在 app 的 ____init___.py 文件下初始化 整個(gè)項(xiàng)目的時(shí)候 在 db.create_all(app=app)的時(shí)候 不需要全部導(dǎo)入各個(gè)模板類圖映射數(shù)據(jù)表, 就可以在數(shù)據(jù)庫中創(chuàng)建所有表 只要在 models/____init___.py 的文件下 的 ____all____ = [ ] 中 輸入 你想導(dǎo)出的文件。 如下為 app/___init____.py 文件下代碼:

from flask import Flask
#  這一步很關(guān)鍵 會導(dǎo)入 models/__init__.py 文件 從而導(dǎo)出了 所有我想導(dǎo)出的 數(shù)據(jù)表文件
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)

數(shù)據(jù)庫遷移

需要預(yù)先安裝 flask-migrate 和 flask-script 包

需要執(zhí)行自己定義的 python 腳本文件 通過 shell 執(zhí)行

自定義腳本文件 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 文件 并在該文件下 導(dǎo)出自己想導(dǎo)出的數(shù)據(jù)表文件 這樣就可以不需要在該腳本文件下 去一一導(dǎo)入自己需要操作的數(shù)據(jù)表文件

執(zhí)行如下命令

python manage.py db init #初始化,工程目錄下生成一個(gè)migrations文件夾
python mange.py db migrate 生成遷移文件操作
python manage.py db upgrade 更新到數(shù)據(jù)庫中操作
python manage.py db downgrade d303dfaaefba 遷移回滾到自己想要的遷移版本 d303dfaaefba 為你的遷移文件的名稱 不要后面的 _

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容