python - 如何将参数传递给`pymssql`中的`cursor.execute`?
问题描述
我正在通过pymssql
库连接到 sql server db。我正在尝试使用该方法cursor.execute(sql, params)
执行查询。
sql = """
SELECT
MIN(myDate)
FROM
%s
"""
上面定义了sql语句。它只是从表中选择最小日期值。
当我运行下面的代码来传递参数时:
cursor.execute(sql, 'Daily')
我得到了这个错误pymssql.ProgrammingError: (102, b"Incorrect syntax near 'Daily'.DB-Lib error message 20018, severity 15:\nGeneral SQL Server error: Check messages from the SQL Server\n")
。
我想知道参数应该如何传递给sql语句?
经过一些调试,我发现问题与表名有关。看起来我不能将表名放入参数中。我不想集中sql字符串的原因是为了避免sql注入。有没有办法将表名作为参数传递?
解决方案
尝试这个
sql = 'SELECT MIN(myDate) FROM %s'
cursor.execute(sql , ['Daily'])
推荐阅读
- python - 由于 geweke 无法导入 pymc3 模块
- tensorflow2.0 - 将 EfficientDet 检查点转换为 .pb
- typescript - 如何在 chrome 扩展中使用 IndexedDB?
- gdal - 错误 - 错误 1:无法找到驱动程序“ESRI”。在运行 ogr2ogr 命令时
- python - 为什么 BERT 模型找不到与我的输入位置参数匹配的选项?
- pyomo - IPOPT 使用哪些约定来构造其拉格朗日?
- algorithm - 空间复杂度和时间复杂度在以下场景中是如何工作的?
- python - 使用 Marshmallow-Python 更新嵌套模式
- wordpress - 从 301 重定向 mod_rewrite 中删除 %2F
- linux - “WinHttpHandler 仅在 Windows 上的 .NET Framework 和 .NET Core 运行时受支持。”