【问题标题】:How Can I Use A Python Variable In A SQL Query So That Parameters Are Processed?如何在 SQL 查询中使用 Python 变量以便处理参数?
【发布时间】:2020-05-22 05:48:26
【问题描述】:

这应该是非常基本的;我不确定我犯的错误是什么。我正在尝试使用查询中的 Python 变量来查询数据库,并且我可以通过以下方式成功查询:

locationIDSelectQuery = ('SELECT locationId FROM stateTemplate WHERE id = 1') cursor.execute(locationIDSelectQuery)

并没有成功:

stateTableRowId = 1 cursor.execute("SELECT locationId FROM stateTemplate WHERE id=?", stateTableRowId)

当我在后者中尝试这个时,它也不起作用(statetableRowID)

两种情况下的错误信息相同: 回溯(最近一次通话最后): 第 29 行,在 cursor.execute("SELECT locationId FROM stateTemplate WHERE id=?", (stateTableRowId))

ValueError: 无法处理参数

如何在我的 SQL 查询中使用 Python 变量?

【问题讨论】:

  • 你需要传递一组参数,我相信。所以(stateTableRowId,) 注意逗号(这就是使它成为元组的原因)

标签: python sql variables parameters


【解决方案1】:

尝试以下操作,将? 替换为%s

stateTableRowId = 1
cursor.execute("SELECT locationId FROM stateTemplate WHERE id=%s", stateTableRowId)

【讨论】:

    【解决方案2】:

    我结合@zealous 和@juanpa.arrivillaga 的建议得出了一个可行的解决方案:stateTableRowId = 1 cursor.execute("SELECT locationId FROM stateTemplate WHERE id=%s", (stateTableRowId,))

    我的理解是,出于安全原因,最好使用? 而不是%s。我还没有让它与我正在连接的数据库一起工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 2021-02-15
      • 2021-03-09
      • 1970-01-01
      相关资源
      最近更新 更多