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)
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)