How can I ignore certain schemas with alembic --autogenerate

前端 未结 2 2172
名媛妹妹
名媛妹妹 2021-01-02 12:30

I have a library that\'s part of a bigger project. The library uses its own schema in a (PostgreSQL) database shared with the larger project.

I want to use ale

相关标签:
2条回答
  • 2021-01-02 12:49

    Based on Oin response, finally a method which ignores tables while running db revision --autogenerate

    In alembic/env.py or 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
    

    In alembic/env.py or 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)
       ...
    

    Now in the tables that you want to ignore:

    class MyClass(db.Model):
    __tablename__='my_class'
    __table_args__ = {"schema": "exclude_from_migrations"}
    
    0 讨论(0)
  • 2021-01-02 12:57

    It seems I can use include_object in conjunction with include_schemas

    In 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, ...)
    
    0 讨论(0)
提交回复
热议问题