mp_update/database.py

32 lines
862 B
Python

import datetime
import json
import asyncpg
from sqlalchemy import func
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
from sqlalchemy.ext.asyncio import AsyncAttrs, create_async_engine, async_sessionmaker
from config import Config
from loguru import logger
class Base(AsyncAttrs, DeclarativeBase):
created_at: Mapped[datetime.datetime] = mapped_column(server_default=func.now())
modified_at: Mapped[datetime.datetime] = mapped_column(server_default=func.now(), onupdate=func.now())
class Engine:
_engine = None
@property
def engine(self):
return self._engine
def __init__(self):
if self._engine is None:
self._engine = create_async_engine(str(Config.postgres_url), pool_size=20, max_overflow=0)
engine = Engine()
Session = async_sessionmaker(engine.engine, expire_on_commit=False)