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) | |