diff --git a/alembic/env.py b/alembic/env.py
index 712b616..1c11bd2 100644
--- a/alembic/env.py
+++ b/alembic/env.py
@@ -1,6 +1,9 @@
 from __future__ import with_statement
+
+import os
+
 from alembic import context
-from sqlalchemy import engine_from_config, pool
+from sqlalchemy import create_engine, pool
 from logging.config import fileConfig
 
 # this is the Alembic Config object, which provides
@@ -11,17 +14,37 @@ config = context.config
 # This line sets up loggers basically.
 fileConfig(config.config_file_name)
 
+
+if 'PAGURE_CONFIG' not in os.environ \
+        and os.path.exists('/etc/pagure/pagure.cfg'):
+    print 'Using configuration file `/etc/pagure/pagure.cfg`'
+    os.environ['PAGURE_CONFIG'] = '/etc/pagure/pagure.cfg'
+
+
+try:
+    import pagure
+    import pagure.lib.model
+except ImportError:
+    import sys
+    sys.path.insert(0, '.')
+    import pagure
+    import pagure.lib.model
+
+
 # add your model's MetaData object here
 # for 'autogenerate' support
-# from myapp import mymodel
-# target_metadata = mymodel.Base.metadata
-target_metadata = None
+target_metadata = pagure.lib.model.BASE
 
 # other values from the config, defined by the needs of env.py,
 # can be acquired:
 # my_important_option = config.get_main_option("my_important_option")
 # ... etc.
 
+DBURL = config.get_main_option("sqlalchemy.url")
+if not DBURL:
+    DBURL = pagure.APP.config['DB_URL']
+
+
 def run_migrations_offline():
     """Run migrations in 'offline' mode.
 
@@ -34,12 +57,13 @@ def run_migrations_offline():
     script output.
 
     """
-    url = config.get_main_option("sqlalchemy.url")
-    context.configure(url=url, target_metadata=target_metadata)
+
+    context.configure(url=DBURL, target_metadata=target_metadata)
 
     with context.begin_transaction():
         context.run_migrations()
 
+
 def run_migrations_online():
     """Run migrations in 'online' mode.
 
@@ -47,22 +71,18 @@ def run_migrations_online():
     and associate a connection with the context.
 
     """
-    engine = engine_from_config(
-                config.get_section(config.config_ini_section),
-                prefix='sqlalchemy.',
-                poolclass=pool.NullPool)
-
-    connection = engine.connect()
-    context.configure(
-                connection=connection,
-                target_metadata=target_metadata
-                )
-
-    try:
+    connectable = create_engine(DBURL, poolclass=pool.NullPool)
+
+    with connectable.connect() as connection:
+
+        context.configure(
+            connection=connection,
+            target_metadata=target_metadata
+        )
+
         with context.begin_transaction():
             context.run_migrations()
-    finally:
-        connection.close()
+
 
 if context.is_offline_mode():
     run_migrations_offline()