Selena Deckelmann <sel...@maxipad.org> wrote:
> Hi! > > We are working on a cloud deployment of our application, and would love to > use a URL from the environment to configure alembic's connection to Postgres. > > Are there any existing plans to make this happen? If we make a patch, would > that be something you'd consider integrating upstream? Hi Selena - If I’m understanding correctly, this can certainly be done now. The env.py file within the Alembic script environment is provided there so that any deployment-specific customizations can happen, including that the URL for the database connection can be derived by any means desired. So if by “the environment”, we meant for example “an environment variable”, that’s easy. Just consult os.environ inside the env.py script: import os def run_migrations_online(): url = os.environ.get(“ALEMBIC_URL”, None) if url: connectable = create_engine(url) else: # this is what env.py usually does connectable = engine_from_config( config.get_section(config.config_ini_section), prefix='sqlalchemy.', poolclass=pool.NullPool) with connectable.connect() as connection: context.configure( connection=connection, target_metadata=target_metadata ) with context.begin_transaction(): context.run_migrations() Other ways to get at URLs or even existing connections include through custom command line arguments sent to the alembic runner, which can be done with the -x flag, there’s a short example which seems to be exactly what you’re looking for here: http://alembic.readthedocs.org/en/latest/api.html#alembic.environment.EnvironmentContext.get_x_argument There’s more ways than that too! If you want to run commands programmatically and have them all on the same transaction, there’s a recipe for that here: http://alembic.readthedocs.org/en/latest/cookbook.html#sharing-a-connection-with-a-series-of-migration-commands-and-environments The way that Alembic finds a database to connect to has always tried to be as open ended as possible. Let me know that one of these methods will work for you. > Thanks! > -selena > > -- > 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. > For more options, visit https://groups.google.com/d/optout. -- 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. For more options, visit https://groups.google.com/d/optout.