aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2025-11-16 13:00:22 +0100
committerDaniel Schadt <kingdread@gmx.de>2025-11-16 13:00:22 +0100
commitd6cc6c7217b9dc8343463198018ae9d9c5fe64f7 (patch)
tree2a9dc39bb522b5666f0dd854b73e98a51f3e928d
parentaf4365288c9b7a6516738c9d933c6fd1201a9a22 (diff)
downloadfietsboek-d6cc6c7217b9dc8343463198018ae9d9c5fe64f7.tar.gz
fietsboek-d6cc6c7217b9dc8343463198018ae9d9c5fe64f7.tar.bz2
fietsboek-d6cc6c7217b9dc8343463198018ae9d9c5fe64f7.zip
enable foreign key checks in SQLite
-rw-r--r--fietsboek/models/__init__.py13
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):