flask -sqlalchemy migrate
改upgrade這段很重要 不然會刪除所有舊資料
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
…
app = Flask(__name__)
app.config[“SQLALCHEMY_DATABASE_URI”]=”mysql+pymysql://ka666wang:200010@127.0.0.1/DevDb” #MySQL連線
db = SQLAlchemy(app)
migrate = Migrate(app, db)
…
class User(db.Model):
id = db.Column(db.Integer, primary_key=True, nullable=False, autoincrement=True)
email = db.Column(db.String(128), nullable=False)
password = db.Column(db.String(128), nullable=False)
命令列
flask db init #產生migrations folder
flask db migrate -m “message” #產生版本別,可進入版本內修改upgarde() downgrade()
變更Class改變資料庫欄位結構需再一次flask db migrate -m “message”
!!重要!!每次都要改好歐
進入版本別 修改upgarde() 升級至新資料庫
def upgrade():
op.drop_table(“user”)
op.create_table(
“user”,
sa.Cloumn(“id”,sa.Integer,nullable=False,autoincrement=True),
sa.Column(“email”,sa.String(length=128),nullable=False),
sa.Column(“password,sa.String(length=128),nullable=False),
sa.PrimaryKeyConstraint(“id”),)
downgrade() 回復原資料庫
def downgrade():
op.drop_table(“user”)
op.create_table(
“user”,
sa.Column(“email”,sa.String(length=128),nullable=False),
sa.Column(“password,sa.String(length=128),nullable=False),
sa.PrimaryKeyConstraint(“email”),)
命令列
flask db upgrade #產生資料庫
flask db downgrade #產生資料庫