🔷 Використання SQLite разом з SqlAlchemy
⚠️ Цікавий нюанс: SQLite за замовчуванням не перевіряє зовнішні ключі.
У багатьох СУБД (PostgreSQL, MySQL) зовнішні ключі завжди перевіряються.
🔧 У SQLite за це відповідає прапорець
За замовчуванням він
👉 Виставити цей прапорець можна таким чином:
Або одразу оголосити обробник події:
✅ Так Ви уникнете "тихих" проблем з цілісністю даних.
#sqlite #sqlalchemy
⚠️ Цікавий нюанс: SQLite за замовчуванням не перевіряє зовнішні ключі.
У багатьох СУБД (PostgreSQL, MySQL) зовнішні ключі завжди перевіряються.
🔧 У SQLite за це відповідає прапорець
foreign_keys. За замовчуванням він
OFF, і якщо його не виставити в ON, можна отримати неузгоджені дані у зв’язаних таблицях, і довго дивуватись чому так.👉 Виставити цей прапорець можна таким чином:
async with engine.begin() as connection:
await connection.execute("PRAGMA foreign_keys=ON")
Або одразу оголосити обробник події:
from sqlalchemy import event
from sqlalchemy.engine import Engine
@event.listens_for(Engine, "connect")
def set_sqlite_pragma(dbapi_connection, _):
cursor = dbapi_connection.cursor()
cursor.execute("PRAGMA foreign_keys=ON")
cursor.close()
✅ Так Ви уникнете "тихих" проблем з цілісністю даних.
#sqlite #sqlalchemy
👍2