Commit c77e9d1d authored by Frédéric Mangano-Tarumi's avatar Frédéric Mangano-Tarumi Committed by Lukas Fleischer
Browse files

Integrate SQLAlchemy into FastAPI


Signed-off-by: Lukas Fleischer's avatarLukas Fleischer <lfleischer@archlinux.org>
parent a5554c19
......@@ -10,6 +10,8 @@ except ImportError:
import aurweb.config
engine = None # See get_engine
def get_sqlalchemy_url():
"""
......@@ -38,6 +40,34 @@ def get_sqlalchemy_url():
raise ValueError('unsupported database backend')
def get_engine():
"""
Return the global SQLAlchemy engine.
The engine is created on the first call to get_engine and then stored in the
`engine` global variable for the next calls.
"""
from sqlalchemy import create_engine
global engine
if engine is None:
engine = create_engine(get_sqlalchemy_url(),
# check_same_thread is for a SQLite technicality
# https://fastapi.tiangolo.com/tutorial/sql-databases/#note
connect_args={"check_same_thread": False})
return engine
def connect():
"""
Return an SQLAlchemy connection. Connections are usually pooled. See
<https://docs.sqlalchemy.org/en/13/core/connections.html>.
Since SQLAlchemy connections are context managers too, you should use it
with Python’s `with` operator, or with FastAPI’s dependency injection.
"""
return get_engine().connect()
class Connection:
_conn = None
_paramstyle = None
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment