Spaces:
Running
Running
from langchain_community.utilities.sql_database import SQLDatabase | |
from sqlalchemy import create_engine | |
from sqlalchemy.pool import StaticPool | |
from langflow.custom import Component | |
from langflow.io import ( | |
Output, | |
StrInput, | |
) | |
class SQLDatabaseComponent(Component): | |
display_name = "SQLDatabase" | |
description = "SQL Database" | |
name = "SQLDatabase" | |
icon = "LangChain" | |
inputs = [ | |
StrInput(name="uri", display_name="URI", info="URI to the database.", required=True), | |
] | |
outputs = [ | |
Output(display_name="SQLDatabase", name="SQLDatabase", method="build_sqldatabase"), | |
] | |
def clean_up_uri(self, uri: str) -> str: | |
if uri.startswith("postgres://"): | |
uri = uri.replace("postgres://", "postgresql://") | |
return uri.strip() | |
def build_sqldatabase(self) -> SQLDatabase: | |
uri = self.clean_up_uri(self.uri) | |
# Create an engine using SQLAlchemy with StaticPool | |
engine = create_engine(uri, poolclass=StaticPool) | |
return SQLDatabase(engine) | |