From 3d8f5d82738f27cdde78ba4bd0b07535c234f6db Mon Sep 17 00:00:00 2001 From: Mitsuo Tokumori Date: Fri, 27 Oct 2023 18:34:05 -0500 Subject: Add sqlite3 connection --- flaskr/db.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 flaskr/db.py (limited to 'flaskr/db.py') 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')) + + +@click.command('init-db') +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 -- cgit v1.2.3