feat: add support for asyncpg
This commit is contained in:
@@ -1,14 +1,19 @@
|
||||
from databases import Database
|
||||
from sqlalchemy import create_engine, MetaData
|
||||
from sqlalchemy import MetaData
|
||||
from sqlalchemy.orm import declarative_base
|
||||
from sqlalchemy.ext.asyncio import create_async_engine, AsyncEngine
|
||||
|
||||
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()
|
||||
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():
|
||||
await database.connect()
|
||||
|
||||
# create tables if they don't exist
|
||||
Base.metadata.create_all(bind=engine)
|
||||
# create tables if they don't exist TODO: maybe?
|
||||
async with engine.begin() as conn:
|
||||
await conn.run_sync(Base.metadata.create_all)
|
||||
|
||||
@app.on_event("shutdown")
|
||||
async def shutdown():
|
||||
|
||||
Reference in New Issue
Block a user