mirror of
https://github.com/hwchase17/langchain.git
synced 2025-06-04 14:13:29 +00:00
Use parameterized queries to select SQL schemas. (#11356)
This commit is contained in:
parent
b0097f8908
commit
289de601c8
@ -388,16 +388,22 @@ class SQLDatabase:
|
|||||||
if self._schema is not None:
|
if self._schema is not None:
|
||||||
if self.dialect == "snowflake":
|
if self.dialect == "snowflake":
|
||||||
connection.exec_driver_sql(
|
connection.exec_driver_sql(
|
||||||
f"ALTER SESSION SET search_path='{self._schema}'"
|
"ALTER SESSION SET search_path = %s", (self._schema,)
|
||||||
)
|
)
|
||||||
elif self.dialect == "bigquery":
|
elif self.dialect == "bigquery":
|
||||||
connection.exec_driver_sql(f"SET @@dataset_id='{self._schema}'")
|
connection.exec_driver_sql("SET @@dataset_id=?", (self._schema,))
|
||||||
elif self.dialect == "mssql":
|
elif self.dialect == "mssql":
|
||||||
pass
|
pass
|
||||||
elif self.dialect == "trino":
|
elif self.dialect == "trino":
|
||||||
connection.exec_driver_sql(f"USE {self._schema}")
|
connection.exec_driver_sql("USE ?", (self._schema,))
|
||||||
else: # postgresql and compatible dialects
|
elif self.dialect == "duckdb":
|
||||||
|
# Unclear which parameterized argument syntax duckdb supports.
|
||||||
|
# The docs for the duckdb client say they support multiple,
|
||||||
|
# but `duckdb_engine` seemed to struggle with all of them:
|
||||||
|
# https://github.com/Mause/duckdb_engine/issues/796
|
||||||
connection.exec_driver_sql(f"SET search_path TO {self._schema}")
|
connection.exec_driver_sql(f"SET search_path TO {self._schema}")
|
||||||
|
else: # postgresql and other compatible dialects
|
||||||
|
connection.exec_driver_sql("SET search_path TO %s", (self._schema,))
|
||||||
cursor = connection.execute(text(command))
|
cursor = connection.execute(text(command))
|
||||||
if cursor.returns_rows:
|
if cursor.returns_rows:
|
||||||
if fetch == "all":
|
if fetch == "all":
|
||||||
|
16
libs/langchain/poetry.lock
generated
16
libs/langchain/poetry.lock
generated
@ -1,4 +1,4 @@
|
|||||||
# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand.
|
# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand.
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "absl-py"
|
name = "absl-py"
|
||||||
@ -2111,18 +2111,17 @@ files = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "duckdb-engine"
|
name = "duckdb-engine"
|
||||||
version = "0.7.3"
|
version = "0.9.2"
|
||||||
description = "SQLAlchemy driver for duckdb"
|
description = "SQLAlchemy driver for duckdb"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
{file = "duckdb_engine-0.7.3-py3-none-any.whl", hash = "sha256:b2dffe1607e87c6bc9d2afd4c43f53f9fc45add8b3c86d276ccbf6ae16cbfcca"},
|
{file = "duckdb_engine-0.9.2-py3-none-any.whl", hash = "sha256:764e83dfb37e2f0ce6afcb8e701299e7b28060a40fdae86cfd7f08e0fca4496a"},
|
||||||
{file = "duckdb_engine-0.7.3.tar.gz", hash = "sha256:a4da04ae3e6bbce8af611b17e09b15212107c8f7871b876a358edfed313ad27d"},
|
{file = "duckdb_engine-0.9.2.tar.gz", hash = "sha256:efcd7b468f9b17e4480a97f0c60eade25cc081e8cfc04c46d63828677964b48f"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
duckdb = ">=0.4.0"
|
duckdb = ">=0.4.0"
|
||||||
numpy = "*"
|
|
||||||
sqlalchemy = ">=1.3.22"
|
sqlalchemy = ">=1.3.22"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -3671,6 +3670,7 @@ optional = false
|
|||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*"
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*"
|
||||||
files = [
|
files = [
|
||||||
{file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"},
|
{file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"},
|
||||||
|
{file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -5842,7 +5842,7 @@ files = [
|
|||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
numpy = [
|
numpy = [
|
||||||
{version = ">=1.20.3", markers = "python_version < \"3.10\""},
|
{version = ">=1.20.3", markers = "python_version < \"3.10\""},
|
||||||
{version = ">=1.21.0", markers = "python_version >= \"3.10\""},
|
{version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""},
|
||||||
{version = ">=1.23.2", markers = "python_version >= \"3.11\""},
|
{version = ">=1.23.2", markers = "python_version >= \"3.11\""},
|
||||||
]
|
]
|
||||||
python-dateutil = ">=2.8.2"
|
python-dateutil = ">=2.8.2"
|
||||||
@ -8802,7 +8802,7 @@ files = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
greenlet = {version = "!=0.4.17", markers = "platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\""}
|
greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""}
|
||||||
typing-extensions = ">=4.2.0"
|
typing-extensions = ">=4.2.0"
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
@ -10615,4 +10615,4 @@ text-helpers = ["chardet"]
|
|||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.0"
|
lock-version = "2.0"
|
||||||
python-versions = ">=3.8.1,<4.0"
|
python-versions = ">=3.8.1,<4.0"
|
||||||
content-hash = "cd1e7089bf95e9eb885c392790b2afa85168b3af8ee8227727f8a95a4b60419b"
|
content-hash = "d40457accab6666901b6d8c2fd0d911814ab8f28265637c189f2512e1496fd92"
|
||||||
|
@ -143,7 +143,7 @@ anthropic = {version = "^0.3.11", optional = true}
|
|||||||
pytest = "^7.3.0"
|
pytest = "^7.3.0"
|
||||||
pytest-cov = "^4.0.0"
|
pytest-cov = "^4.0.0"
|
||||||
pytest-dotenv = "^0.5.2"
|
pytest-dotenv = "^0.5.2"
|
||||||
duckdb-engine = "^0.7.0"
|
duckdb-engine = "^0.9.2"
|
||||||
pytest-watcher = "^0.2.6"
|
pytest-watcher = "^0.2.6"
|
||||||
freezegun = "^1.2.2"
|
freezegun = "^1.2.2"
|
||||||
responses = "^0.22.0"
|
responses = "^0.22.0"
|
||||||
|
Loading…
Reference in New Issue
Block a user