29 lines
1013 B
Python
29 lines
1013 B
Python
from flask_sqlalchemy import SQLAlchemy
|
|
from flask_migrate import Migrate
|
|
from flask_login import LoginManager
|
|
from sqlalchemy import event
|
|
from sqlalchemy.engine import Engine
|
|
import sqlite3
|
|
|
|
db = SQLAlchemy()
|
|
migrate = Migrate()
|
|
login_manager = LoginManager()
|
|
login_manager.login_view = 'auth.login'
|
|
login_manager.login_message = 'Please log in to access this page.'
|
|
login_manager.login_message_category = 'warning'
|
|
|
|
|
|
@event.listens_for(Engine, "connect")
|
|
def _set_sqlite_pragma(dbapi_connection, connection_record):
|
|
"""Enable WAL mode and sane concurrency settings for SQLite.
|
|
|
|
WAL lets readers and writers operate concurrently, which prevents
|
|
'database is locked' errors when running under multi-worker Gunicorn.
|
|
"""
|
|
if isinstance(dbapi_connection, sqlite3.Connection):
|
|
cursor = dbapi_connection.cursor()
|
|
cursor.execute("PRAGMA journal_mode=WAL")
|
|
cursor.execute("PRAGMA busy_timeout=5000")
|
|
cursor.execute("PRAGMA synchronous=NORMAL")
|
|
cursor.close()
|