python - 使用flask-migrate进行数据库迁移时,如何更改db.String()的长度?
迷茫
迷茫 2017-04-17 17:53:56
0
2
952

比如有一个简单的模型

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(32), index=True)

一开始,username的长度限制在32,现在将其增大,比如说变为128,flask-migrate似乎不会检测到这个String变长的变化。

我使用了命令自动生成迁移脚本

python code.py db migrate -m "some comment"
python code.py db upgrade

之后,发现username的列的长度依旧被限制在32.

如何进行String长度的变化这种迁移?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(2)
黄舟

alembic支援檢測欄位長度改變,不過它不是預設的,需要配置。

設定compare_typeTrue可以检查出类型字段的改变比如字段长度,设置compare_server_default可以檢查出設定的欄位預設值的改變。

詳細參考文件

刘奇

flask-migrate是不會偵測列的修改的,但可以這樣做
先在User下加一行,然後migrater後,再作修改,把之前增加的行刪除,然後再加幾行,要注意的是sqlite下不一定能行得通

python code.py db edit

def upgrade():
    ### commands auto generated by Alembic - please adjust! ###
    op.alter_column('users', 'username', existing_type=sa.String(32), type_=sa.String(128))
    ### end Alembic commands ###


def downgrade():
    ### commands auto generated by Alembic - please adjust! ###
    op.alter_column('users', 'username', existing_type=sa.String(128), type_=sa.String(32))
    ### end Alembic commands ###

參考
http://alembic.readthedocs.io/en/latest/ops.html

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板