You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
762 B
43 lines
762 B
import sqlite3 |
|
|
|
from flask import current_app, g |
|
|
|
import os |
|
DB_FILE = os.environ.get('DB_FILE', './data/db.sqlite') |
|
|
|
get_return = sqlite3.Connection |
|
|
|
|
|
def get() -> get_return: |
|
if 'db' not in g: |
|
g.db = sqlite3.connect( |
|
DB_FILE, |
|
detect_types=sqlite3.PARSE_DECLTYPES, |
|
) |
|
g.db.row_factory = sqlite3.Row |
|
|
|
return g.db |
|
|
|
|
|
def close(e=None): |
|
db = g.pop('db', None) |
|
|
|
if db: |
|
db.close() |
|
|
|
|
|
def init(): |
|
db = get() |
|
|
|
with current_app.open_resource('init.sql') as f: |
|
db.executescript(f.read().decode('utf8')) |
|
db.commit() |
|
|
|
|
|
def init_app(app): |
|
app.teardown_appcontext(close) |
|
|
|
import os.path |
|
if not os.path.exists(DB_FILE): |
|
with app.app_context(): |
|
init()
|
|
|