我有一个图书馆,它是更大项目的一部分。该库在与较大项目共享的(PostgreSQL)数据库中使用自己的模式。
我想使用alembic revision --autogenerate
仅生成库架构的迁移,并忽略对main / default架构中表的更改。这样做有什么选择吗?
FWIW,我在env.py中尝试了include_schemas=False
参数到context.configure,但似乎没有做任何事情。
答案 0 :(得分:7)
我似乎可以将include_object
与include_schemas
在alembic/env.py
:
def include_object(object, name, type_, reflected, compare_to):
if type_ == 'table' and object.schema != MY_SCHEMA:
return False
return True
...
context.configure(..., include_object=include_object, ...)
答案 1 :(得分:0)
基于Oin的响应,最后是一种在运行db版本--autogenerate时忽略表的方法
在alembic / env.py或migrations / env.py中:
def include_object(object, name, type_, reflected, compare_to):
if (type_ == "table" and object.schema == "exclude_from_migrations"):
return False
else:
return True
在alembic / env.py或migrations / env.py中:
def run_migrations_online():
....
context.configure(connection=connection,
target_metadata=target_metadata,
include_object = include_object,
process_revision_directives=process_revision_directives,
**current_app.extensions['migrate'].configure_args)
...
现在要忽略的表中:
class MyClass(db.Model):
__tablename__='my_class'
__table_args__ = {"schema": "exclude_from_migrations"}