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

比如有一个简单的模型

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长度的变化这种迁移?

迷茫
迷茫

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

répondre à tous(2)
黄舟

Alembic prend en charge la détection des changements de longueur de champ, mais ce n'est pas la valeur par défaut et doit être configuré.

Définissez compare_type sur True pour vérifier les modifications dans les champs de type tels que la longueur du champ, et définissez compare_server_default pour vérifier les modifications apportées aux valeurs par défaut des champs définis.

Document de référence détaillé

刘奇

flask-migrate ne détectera pas les modifications de colonne, mais vous pouvez le faire
Ajoutez d'abord une ligne sous Utilisateur, puis migrez, puis apportez des modifications, supprimez les lignes précédemment ajoutées, puis ajoutez quelques lignes supplémentaires. noter que cela peut ne pas fonctionner sous sqlite

python code.py db modifier

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 ###

Référence
http://alembic.readthedocs.io/en/latest/ops.html

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal