That works. I check if the version table exists in the schema and set version_table_schema if it does. Then after run_migrations if the version table didn't exist in the schema I move it to the schema.
Thanks! Brian On Tuesday, February 18, 2020 at 1:30:54 PM UTC-5, Mike Bayer wrote: > > > > On Tue, Feb 18, 2020, at 1:17 PM, Brian Hill wrote: > > Is there a way to move the alembic_version table in the Public schema > (postgres) to a specific schema (mult-tenant) as part of a migration? > > > I highly doubt this is possible in the general case without the raw SQL in > your env.py, because as the migration runs, the environment needs to > update the table. if it moves schemas, then it won't be updating the > correct table anymore. You would have to manipulate the internal state > of the MigrationContext within the migration script so that this doesnt > happen, however, the migration is also occurring inside of a transaction so > it's very likely that you wouldn't actually be able to fully drop the old > table in every case and there could be other side effects of this as well, > and I cant guarantee this internal manipulation will always work for new > Alembic releases. > > > > I want alembic to read the inital version from Public.alembic_version and > then write the new upgraded version to the specific schema.alembic_version. > > The only way I can get it to work is executing raw sql after the > migration, and this won't work for future migrations. > > with context.begin_transaction(): > context.run_migrations() > context.execute(f'alter table Public.alembic_version set schema {DB_SCHEMA > }') > > > > I think what you can do here is check for alembic_version in the old > schema and in the new one and then move the table after the migrations but > only if it needs to be moved. Basically have the migrations always > run with the schema whereever it is to start with, then move it after the > fact. > > you'd have to detect which schema to use before you configure the context, > however, since you need to pass it the schema for the alembic_version table. > > > > > Do I have to flatten/rebase my versions after this? > > Thanks, > > Brian > > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy-alembic" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sqlalchemy-alembic+unsubscr...@googlegroups.com <javascript:>. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sqlalchemy-alembic/9ceb8556-e2c3-4631-84cf-8ba636c31a24%40googlegroups.com > > <https://groups.google.com/d/msgid/sqlalchemy-alembic/9ceb8556-e2c3-4631-84cf-8ba636c31a24%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > > -- You received this message because you are subscribed to the Google Groups "sqlalchemy-alembic" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy-alembic+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sqlalchemy-alembic/7a4e0542-0ae8-4148-a802-9c34c485144b%40googlegroups.com.