diff options
author | Christopher Allan Webber <cwebber@dustycloud.org> | 2013-04-26 15:27:44 -0500 |
---|---|---|
committer | Christopher Allan Webber <cwebber@dustycloud.org> | 2013-04-26 15:27:44 -0500 |
commit | ea5fb2d9d4785b1d0afc4185da15783629831fee (patch) | |
tree | e879400719994e64332b0a8ea6dbb9bc46b7197a /mediagoblin/db/open.py | |
parent | 313b38f895332a700984adf8156ec9b3c4150b09 (diff) | |
download | mediagoblin-ea5fb2d9d4785b1d0afc4185da15783629831fee.tar.lz mediagoblin-ea5fb2d9d4785b1d0afc4185da15783629831fee.tar.xz mediagoblin-ea5fb2d9d4785b1d0afc4185da15783629831fee.zip |
Switch "sqlite_refcheck" keyword arg to "migrations" which Elrond thinks is cleaner
Also, if migrations is true, *explicitly* say that foreign key checking is off
Diffstat (limited to 'mediagoblin/db/open.py')
-rw-r--r-- | mediagoblin/db/open.py | 18 |
1 files changed, 15 insertions, 3 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) |