cari

Rumah  >  Soal Jawab  >  teks badan

python - 使用flask-migrate进行数据库迁移时,如何更改db.String()的长度?

比如有一个简单的模型

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

迷茫迷茫2813 hari yang lalu965

membalas semua(2)saya akan balas

  • 黄舟

    黄舟2017-04-17 17:55:56

    Alembic menyokong pengesanan perubahan panjang medan, tetapi ia bukan lalai dan perlu dikonfigurasikan.

    Tetapkan compare_type kepada True untuk menyemak perubahan dalam medan jenis seperti panjang medan dan tetapkan compare_server_default untuk menyemak perubahan kepada nilai lalai medan set.

    Dokumen rujukan terperinci

    balas
    0
  • 怪我咯

    怪我咯2017-04-17 17:55:56

    Flask-migrate tidak akan mengesan pengubahsuaian lajur, tetapi anda boleh melakukan ini
    Mula-mula tambahkan baris di bawah Pengguna, kemudian pindahkan, kemudian buat pengubahsuaian, padamkan baris yang ditambahkan sebelum ini, dan kemudian tambahkan beberapa baris lagi ambil perhatian bahawa ini mungkin tidak berfungsi di bawah sqlite

    kod python.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 ###
    

    Rujukan
    http://alembic.readthedocs.io/en/latest/ops.html

    balas
    0
  • Batalbalas