feat: add support for asyncpg
This commit is contained in:
@@ -1,14 +1,19 @@
|
|||||||
from databases import Database
|
from databases import Database
|
||||||
from sqlalchemy import create_engine, MetaData
|
from sqlalchemy import MetaData
|
||||||
from sqlalchemy.orm import declarative_base
|
from sqlalchemy.orm import declarative_base
|
||||||
|
from sqlalchemy.ext.asyncio import create_async_engine, AsyncEngine
|
||||||
|
|
||||||
from backend.config import settings
|
from backend.config import settings
|
||||||
|
|
||||||
# for Alembic migrations and sync operations
|
|
||||||
engine = create_engine(settings.database_url)
|
|
||||||
# to use with async requests
|
|
||||||
database = Database(settings.database_url)
|
|
||||||
|
|
||||||
metadata = MetaData()
|
metadata = MetaData()
|
||||||
Base = declarative_base(metadata=metadata)
|
Base = declarative_base(metadata=metadata)
|
||||||
|
|
||||||
|
# async engine for use with run_sync and sessionmaker
|
||||||
|
engine = create_async_engine(
|
||||||
|
settings.database_url,
|
||||||
|
echo=(settings.environment == "dev"),
|
||||||
|
future=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
# asyncpg connection used by `databases` package
|
||||||
|
database = Database(settings.database_url)
|
||||||
|
|||||||
@@ -19,8 +19,9 @@ app.add_middleware(
|
|||||||
async def startup():
|
async def startup():
|
||||||
await database.connect()
|
await database.connect()
|
||||||
|
|
||||||
# create tables if they don't exist
|
# create tables if they don't exist TODO: maybe?
|
||||||
Base.metadata.create_all(bind=engine)
|
async with engine.begin() as conn:
|
||||||
|
await conn.run_sync(Base.metadata.create_all)
|
||||||
|
|
||||||
@app.on_event("shutdown")
|
@app.on_event("shutdown")
|
||||||
async def shutdown():
|
async def shutdown():
|
||||||
|
|||||||
Reference in New Issue
Block a user