스택큐힙리스트

여러 개의 데이터베이스 연결 사용하기: FastAPI 본문

카테고리 없음

여러 개의 데이터베이스 연결 사용하기: FastAPI

스택큐힙리스트 2024. 1. 26. 15:44
반응형

나는 FAST API에 새로운 사람이며 그에 대해 많은 지식이 없습니다. 여러 개의 데이터베이스를 연결하고 싶습니다.
https://github.com/tiangolo/fastapi/issues/2592를 살펴보려고 했지만 접근 방식을 이해할 수 없었습니다. 또한 데이터베이스에서 데이터를 가져오고 값을 업데이트하는 방법에 대해 궁금합니다.
누군가 도와주실 수 있다면 정말 좋을 것 같습니다. 또는 이 작업을 수행할 수 있는 다른 예제나 방법이 있을까요?

답변 1

자신을 미들웨어로 만드세요. 다음은 내 예시입니다:


# BaseHTTPMiddleware을 확장하여 라우터 이름을 필터링하고 환경변수에 데이터베이스 URL을 설정합니다.
class DatabaseSelector(BaseHTTPMiddleware):
def __init__(self, app):
super().__init__(app)
async def dispatch(self, request: Request, call_next):
url_param = str(request.url).split(/)
if api in str(request.url):
url_param.remove(api)
route_name = url_param[3]
if route_name not in list(routeMap.keys()):
SQLALCHEMY_DATABASE_URI = routeMap[base_mysql]
else:
SQLALCHEMY_DATABASE_URI = routeMap[route_name]
os.environ[SQLALCHEMY_DATABASE_URI] = SQLALCHEMY_DATABASE_URI
response = await call_next(request)
return response

routeMap = {
base_mysql: 'mysql+pymysql://{}:{}@{}:{}/{}'.format(*BaseMysql.values()),
show_data: 'mysql+pymysql://{}:{}@{}:{}/{}'.format(*RequestMysql.values()),
else_data: xxxxxxx,
}

http 요청을 보낼 때, 이 routeMap을 기반으로 라우터 이름을 가져올 수 있습니다:


def get_db():
SQLALCHEMY_DATABASE_URI = os.getenv('SQLALCHEMY_DATABASE_URI')
engine = create_engine(SQLALCHEMY_DATABASE_URI, echo=True, pool_size=50)
SessionLocal = sessionmaker(bind=engine)
db = SessionLocal()
try:
yield db
finally:
db.close()

마지막으로, 어떤 데이터베이스에 연결할지 신경 쓰지 않고 get_db를 호출하면 됩니다.

답변 2

여러 개의 데이터베이스 연결은 FastAPI를 사용합니다.
FastAPI는 Python 웹 프레임워크로서, 빠른 속도와 비동기 처리를 특징으로 합니다. 이러한 FastAPI를 사용하면 여러 개의 데이터베이스를 동시에 연결할 수 있습니다.
여러 개의 데이터베이스 연결은 대규모 애플리케이션에서 매우 중요합니다. 왜냐하면 데이터의 복잡성과 규모가 증가함에 따라 하나의 데이터베이스로는 처리하기 어려워지기 때문입니다. FastAPI는 다중 데이터베이스 연결에 대한 지원을 제공하여 개발자가 이러한 문제를 해결할 수 있도록 돕습니다.
FastAPI를 사용하여 여러 개의 데이터베이스에 연결하는 방법은 다양합니다. 각 데이터베이스는 일련의 설정 값으로 정의되며, 데이터베이스 유형과 연결 정보를 포함합니다. FastAPI는 이러한 데이터베이스 연결 설정을 기반으로 실행시킬 수 있도록 지원합니다.
또한 FastAPI에서는 비동기 처리를 통해 데이터베이스 연결을 효율적으로 처리할 수 있습니다. 비동기 처리는 여러 작업을 동시에 수행할 수 있으므로, 여러 개의 데이터베이스 연결을 병렬로 처리하는 데 이점을 제공합니다. 이를 통해 애플리케이션의 응답 시간과 처리량을 향상시킬 수 있습니다.
마지막으로 SEO 측면에서, FastAPI를 사용하여 여러 개의 데이터베이스 연결을 관리하는 것은 웹 애플리케이션의 성능을 향상시키므로 검색 엔진 최적화에 긍정적인 영향을 줄 수 있습니다. 빠른 응답 시간과 효율적인 데이터 처리는 사용자 경험을 향상시키는 데 도움을 줍니다. 이는 검색 엔진에서 웹 사이트를 더 높은 순위로 평가할 수 있도록 도와줍니다.
요약하자면, FastAPI를 사용하여 여러 개의 데이터베이스 연결을 구축하는 것은 대규모 애플리케이션에 매우 유용합니다. FastAPI는 다양한 데이터베이스에 대한 지원과 비동기 처리를 제공하여 성능을 향상시키고 SEO에 긍정적인 영향을 주는 데 도움을 줍니다.

반응형
Comments