From 83631606d3debf4a99aacc740265807c32d78bfd Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Thu, 10 Aug 2023 11:30:06 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(manager.py):=20fix=20undefin?= =?UTF-8?q?ed=20variable=20'database=5Furl'=20error=20in=20=5Fcreate=5Feng?= =?UTF-8?q?ine=20method=20=E2=9C=A8=20feat(manager.py):=20add=20support=20?= =?UTF-8?q?for=20SQLite=20database=20by=20setting=20connect=5Fargs=20in=20?= =?UTF-8?q?create=5Fengine=20method?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../langflow/services/database/manager.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/backend/langflow/services/database/manager.py b/src/backend/langflow/services/database/manager.py index 92385a457..bf90703e2 100644 --- a/src/backend/langflow/services/database/manager.py +++ b/src/backend/langflow/services/database/manager.py @@ -1,11 +1,16 @@ from pathlib import Path +from typing import TYPE_CHECKING from langflow.services.base import Service +from langflow.services.utils import get_settings_manager from sqlmodel import SQLModel, Session, create_engine from langflow.utils.logger import logger from alembic.config import Config from alembic import command from langflow.services.database import models # noqa +if TYPE_CHECKING: + from sqlalchemy.engine import Engine + class DatabaseManager(Service): name = "database_manager" @@ -17,7 +22,19 @@ class DatabaseManager(Service): langflow_dir = Path(__file__).parent.parent.parent self.script_location = langflow_dir / "alembic" self.alembic_cfg_path = langflow_dir / "alembic.ini" - self.engine = create_engine(database_url) + self.engine = self._create_engine() + + def _create_engine(self) -> "Engine": + """Create the engine for the database.""" + settings_manager = get_settings_manager() + if ( + settings_manager.settings.DATABASE_URL + and settings_manager.settings.DATABASE_URL.startswith("sqlite") + ): + connect_args = {"check_same_thread": False} + else: + connect_args = {} + return create_engine(self.database_url, connect_args=connect_args) def __enter__(self): self._session = Session(self.engine)