21 lines
883 B
Python
21 lines
883 B
Python
import sqlite3
|
|
|
|
from .db_path import db_path
|
|
|
|
|
|
def connect(slug):
|
|
# timeout=10 : si une autre connexion tient un verrou d'écriture au même
|
|
# instant (deux requêtes qui arrivent presque en même temps, ex. deux
|
|
# onglets, ou le navigateur qui recharge plusieurs ressources), sqlite3
|
|
# réessaie pendant 10 secondes au lieu de lever immédiatement "database
|
|
# is locked". Le mode WAL (Write-Ahead Logging) va plus loin : il permet
|
|
# à des lectures de se faire PENDANT qu'une écriture est en cours
|
|
# ailleurs, ce qui est la cause la plus fréquente de ce blocage avec le
|
|
# serveur de développement Flask.
|
|
conn = sqlite3.connect(db_path(slug), timeout=10)
|
|
conn.row_factory = sqlite3.Row
|
|
conn.execute("PRAGMA foreign_keys = ON")
|
|
conn.execute("PRAGMA journal_mode = WAL")
|
|
conn.execute("PRAGMA busy_timeout = 8000")
|
|
return conn
|