Rumah > Soal Jawab > teks badan
比如有一个简单的模型
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长度的变化这种迁移?
黄舟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
怪我咯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