我能够使用
添加/删除列时的alembic --autogenerate
。
但是,当我想修改例如200个字符到2000个字符的“url”列时,它不会检测到更改。
如何制作Alembic(使用SQLAlchemy),检测更改并自动生成脚本到我的模型各种列的“大小”,并为PostgreSQL创建“alter_column”命令?
编辑:
为什么不使用alembic自动添加:
op.alter_column('mytable', 'url', type_=sa.String(2000), existing_type=sa.String(length=200), nullable=True)
答案 0 :(得分:41)
看起来我在reddit的/ r / flask上找到了答案。
http://www.reddit.com/r/flask/comments/1glejl/alembic_autogenerate_column_changes/cale9o0
只需在env.py的“run_migrations_online”函数中的context.configure()参数中添加“compare_type = True”。
context.configure(
connection=connection,
target_metadata=target_metadata,
compare_type=True
)
答案 1 :(得分:1)
我也遇到了这个问题,在public String returnConnType() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE);
String result = "None";
if (connectivityManager != null) {
Network network = connectivityManager.getActiveNetwork();
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
if (capabilities == null) {
result = "None";
}
if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
result = "WIFI";
} else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
result = "MOBILE";
} else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN)) {
result = "VPN";
}
}
return result;
}
文件的alembic 1.0.8
函数中的context.configure
中,def run_migrations_online()
将会是这样:
migrations/env.py
只需删除或评论with connectable.connect() as connection:
context.configure(
connection=connection,
target_metadata=target_metadata,
process_revision_directives=process_revision_directives,
**current_app.extensions['migrate'].configure_args,
)
,然后在其上添加process_revision_directives=process_revision_directives
。
赞:
compare_type=True