diff options
| -rw-r--r-- | fietsboek/models/__init__.py | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/fietsboek/models/__init__.py b/fietsboek/models/__init__.py index c70fee1..e16c0ee 100644 --- a/fietsboek/models/__init__.py +++ b/fietsboek/models/__init__.py @@ -5,7 +5,7 @@ access the submodules if you need some of the auxiliary definitions. """ import zope.sqlalchemy -from sqlalchemy import engine_from_config +from sqlalchemy import engine_from_config, event from sqlalchemy.orm import configure_mappers, sessionmaker from .badge import Badge # flake8: noqa @@ -24,7 +24,16 @@ configure_mappers() def get_engine(settings, prefix="sqlalchemy."): """Create an SQL Engine from the given settings.""" - return engine_from_config(settings, prefix) + engine = engine_from_config(settings, prefix) + + # SQLite is quite loose with foreign keys by default, so make sure it + # checks them. + def _fk_pragma_on_connect(dbapi_con, con_record): + dbapi_con.execute("PRAGMA foreign_keys=ON;") + + if engine.dialect.name == "sqlite": + event.listen(engine, "connect", _fk_pragma_on_connect) + return engine def get_session_factory(engine): |
