summaryrefslogtreecommitdiffstats
path: root/flaskr/db.py
diff options
context:
space:
mode:
authorMitsuo Tokumori <[email protected]>2023-10-27 18:34:05 -0500
committerMitsuo Tokumori <[email protected]>2023-10-27 18:34:05 -0500
commit3d8f5d82738f27cdde78ba4bd0b07535c234f6db (patch)
treea6384686a0abab98480f030c063f5f60b5797618 /flaskr/db.py
parent7c0d3e015f2fc1fe0ebdfca819d98d2a5abd8223 (diff)
downloadustayml-3d8f5d82738f27cdde78ba4bd0b07535c234f6db.tar.gz
ustayml-3d8f5d82738f27cdde78ba4bd0b07535c234f6db.tar.bz2
ustayml-3d8f5d82738f27cdde78ba4bd0b07535c234f6db.zip
Add sqlite3 connection
Diffstat (limited to 'flaskr/db.py')
-rw-r--r--flaskr/db.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/flaskr/db.py b/flaskr/db.py
new file mode 100644
index 0000000..7185da8
--- /dev/null
+++ b/flaskr/db.py
@@ -0,0 +1,45 @@
+import sqlite3
+
+import click
+from flask import current_app, g
+
+
+def get_db():
+ if 'db' not in g:
+ g.db = sqlite3.connect(
+ current_app.config['DATABASE'],
+ detect_types=sqlite3.PARSE_DECLTYPES
+ )
+ # Return rows that behave like dicts
+ g.db.row_factory = sqlite3.Row
+
+ return g.db
+
+
+def close_db(e=None):
+ db = g.pop('db', None)
+
+ if db:
+ db.close()
+
+# CLI:
+# https://flask.palletsprojects.com/en/3.0.x/cli/
+
+def init_db():
+ db = get_db()
+
+ with current_app.open_resource('schema.sql') as f:
+ db.executescript(f.read().decode('utf8'))
+
+
+def init_db_command():
+ """Clear the existing data and create new tables."""
+ init_db()
+ click.echo('Initialized the database.')
+
+# Register function with application
+
+def init_app(app):
+ app.teardown_appcontext(close_db) # callback after returning response
+ app.cli.add_command(init_db_command) \ No newline at end of file