mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
Integrate SQLAlchemy into FastAPI
Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
This commit is contained in:
parent
a5554c19a9
commit
c77e9d1de0
1 changed files with 30 additions and 0 deletions
30
aurweb/db.py
30
aurweb/db.py
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue