1. 程式人生 > >SQLAlchemy資料庫遷移

SQLAlchemy資料庫遷移

程式碼部分

from flask import Flask
# 匯入擴充套件包
from flask_sqlalchemy import SQLAlchemy
# 匯入指令碼管理器
from flask_script import Manager
# 匯入遷移框架和遷移命令
from flask_migrate import Migrate,MigrateCommand


app = Flask(__name__)
# 資料庫指定連結
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:[email protected]
/temp_python18' # 動態追蹤修改,無論設定與否不影響程式碼的執行,只會提示警告資訊。 # 如果設定為True:跟蹤資料庫的變化,會影響程式碼的效率。 # 如果設定為False,不影響程式碼的效率。 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) # 例項化管理器物件 manage = Manager(app) # 使用遷移框架 # migrate = Migrate(app,db) Migrate(app,db) # 新增遷移命令 manage.add_command('db',MigrateCommand) # 定義角色模型類,必須繼承自db.Model class Role(db.Model): # 資料庫表名,可以不定義,如果不定義,會預設建立同類名的表名role # 表名的定義:tb_roles;info_roles; __tablename__ = 'roles' # 定義欄位,並制定主鍵 id = db.Column(db.Integer, primary_key=True) info = db.Column(db.String(32), unique=True) us = db.relationship('User', backref='role') def __repr__(self): return 'info:%s' % self.info # 定義使用者模型類:name/email/pswd/外來鍵(角色具體屬於的身份資訊) class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(32)) # email = db.Column(db.String(32)) mobile = db.Column(db.String(32)) pswd = db.Column(db.String(32)) # 多方定義外來鍵,指向一方的表名的主鍵id role_id = db.Column(db.Integer, db.ForeignKey('roles.id')) def __repr__(self): return 'name:%s' % self.name if __name__ == '__main__': # app.run(debug=True) manage.run()

實際操作順序:
1.python 檔案 db init
2.python 檔案 db migrate -m"版本名(註釋)"
3.python 檔案 db upgrade 然後觀察表結構
4.根據需求修改模型
5.python 檔案 db migrate -m"新版本名(註釋)"
6.python 檔案 db upgrade 然後觀察表結構
7.若返回版本,則利用 python 檔案 db history檢視版本號
8.python 檔案 db downgrade(upgrade) 版本號,不推薦