【发布时间】:2019-09-05 14:16:57
【问题描述】:
我有以下代码:
query = """
DECLARE @DATABASE VARCHAR(128) = '{}';
DECLARE @SCHEMA VARCHAR(128) = '{}';
DECLARE @TABLE VARCHAR(128) = '{}';
DECLARE @sql VARCHAR(200) =
'SELECT * FROM ' + CONCAT(QUOTENAME(@DATABASE), '.', QUOTENAME(@SCHEMA), '.', QUOTENAME(@TABLE), ' WHERE COD = ?')
EXEC sp_executesql @sql
""".format(
db_config.db.database, db_config.db.schema, db_config.db.table
)
return pd.read_sql_query(
query, db_config.db.connection, params=[cod_sol]
)
在我添加 sql 参数标记 ' WHERE COD = ?' 之前,它一直正常工作。似乎 pandas 或 pyodbc 无法解析那种类型的查询,使用简单的 sql 语句就可以了,但不适用于动态表。
这是最终@sql 变量的结果:
SELECT * FROM [DB].[SCHEMA].[TABLE] WHERE COD = ?
所以看起来是对的。
有可能做那种事吗?
【问题讨论】: