diff options
-rw-r--r-- | mediagoblin/db/open.py | 18 | ||||
-rw-r--r-- | mediagoblin/gmg_commands/dbupdate.py | 2 |
2 files changed, 16 insertions, 4 deletions
diff --git a/mediagoblin/db/open.py b/mediagoblin/db/open.py index 4c0694cc..0b1679fb 100644 --- a/mediagoblin/db/open.py +++ b/mediagoblin/db/open.py @@ -71,12 +71,24 @@ def _sqlite_fk_pragma_on_connect(dbapi_con, con_record): dbapi_con.execute('pragma foreign_keys=on') -def setup_connection_and_db_from_config(app_config, sqlite_refcheck=True): +def _sqlite_disable_fk_pragma_on_connect(dbapi_con, con_record): + """ + Disable foreign key checking on each new sqlite connection + (Good for migrations!) + """ + dbapi_con.execute('pragma foreign_keys=off') + + +def setup_connection_and_db_from_config(app_config, migrations=False): engine = create_engine(app_config['sql_engine']) # Enable foreign key checking for sqlite - if app_config['sql_engine'].startswith('sqlite://') and sqlite_refcheck: - event.listen(engine, 'connect', _sqlite_fk_pragma_on_connect) + if app_config['sql_engine'].startswith('sqlite://'): + if migrations: + event.listen(engine, 'connect', + _sqlite_disable_fk_pragma_on_connect) + else: + event.listen(engine, 'connect', _sqlite_fk_pragma_on_connect) # logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO) diff --git a/mediagoblin/gmg_commands/dbupdate.py b/mediagoblin/gmg_commands/dbupdate.py index f33d83d5..32700c40 100644 --- a/mediagoblin/gmg_commands/dbupdate.py +++ b/mediagoblin/gmg_commands/dbupdate.py @@ -114,7 +114,7 @@ def run_dbupdate(app_config, global_config): global_config.get('plugins', {}).keys()) # Set up the database - db = setup_connection_and_db_from_config(app_config, sqlite_refcheck=False) + db = setup_connection_and_db_from_config(app_config, migrations=True) Session = sessionmaker(bind=db.engine) |