diff --git a/.github/workflows/database.yml b/.github/workflows/database.yml index 33a8d623e358f..e60db9b1ea61d 100644 --- a/.github/workflows/database.yml +++ b/.github/workflows/database.yml @@ -16,6 +16,7 @@ env: PANDAS_CI: 1 PATTERN: ((not slow and not network and not clipboard) or (single and db)) COVERAGE: true + SQLALCHEMY_WARN_20: true jobs: Linux_py38_IO: diff --git a/pandas/io/sql.py b/pandas/io/sql.py index afd045bd8bb2b..5bedaacdf0229 100644 --- a/pandas/io/sql.py +++ b/pandas/io/sql.py @@ -178,6 +178,10 @@ def execute(sql, con, params=None): Results Iterable """ pandas_sql = pandasSQL_builder(con) + if isinstance(pandas_sql, SQLDatabase): + from sqlalchemy import text + + sql = text(sql) args = _convert_params(sql, params) return pandas_sql.execute(*args) @@ -1520,9 +1524,17 @@ def read_query( read_sql """ - args = _convert_params(sql, params) + if isinstance(sql, str): + if isinstance(params, (list, tuple)): + result = self.connectable.connect().exec_driver_sql(sql, tuple(params)) + else: + from sqlalchemy import text - result = self.execute(*args) + sql = text(sql) + result = self.execute(sql, params) + else: + args = _convert_params(sql, params) + result = self.execute(*args) columns = result.keys() if chunksize is not None: