web sttarting
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
# Database configuration package
|
||||
from pydantic.generics import GenericModel
|
||||
from pydantic import BaseModel
|
||||
import re
|
||||
import os
|
||||
import urllib.parse
|
||||
|
||||
class Settings(GenericModel):
|
||||
class Settings(BaseModel):
|
||||
DB_HOST: str = os.getenv("DB_HOST", "postgres")
|
||||
DB_PORT: int = int(os.getenv("DB_PORT", "5432"))
|
||||
DB_USER: str = os.getenv("DB_USER", "postgres")
|
||||
@@ -32,3 +32,15 @@ class Settings(GenericModel):
|
||||
def DATABASE_URL_syncpg(self) -> str:
|
||||
pwd = urllib.parse.quote_plus(str(self.DB_PASS))
|
||||
return f"postgresql+pg8000://{self.DB_USER}:{pwd}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}"
|
||||
|
||||
@property
|
||||
def PG8000_CONNECT_ARGS(self) -> dict:
|
||||
"""connect_args для pg8000 — отключаем SSL (сервер его не поддерживает)."""
|
||||
return {"ssl_context": None}
|
||||
|
||||
|
||||
def make_engine():
|
||||
"""Создаёт SQLAlchemy engine с правильными параметрами для pg8000."""
|
||||
from sqlalchemy import create_engine
|
||||
s = Settings()
|
||||
return create_engine(s.DATABASE_URL_syncpg, connect_args=s.PG8000_CONNECT_ARGS, future=True)
|
||||
|
||||
Reference in New Issue
Block a user