【问题标题】:How can I use a specified variable in a SELECT SQL statement?如何在 SELECT SQL 语句中使用指定的变量?
【发布时间】:2017-03-13 16:18:22
【问题描述】:

我正在创建一个程序,允许用户从菜单中选择 2 个化学元素,然后告诉他们这两者之间的反应结果。我知道我的数据库正在工作,并且我正在尝试创建两个可以在程序中的任何位置更改的变量。这是我到目前为止的代码,使用了我知道正确结果的 2 个值:

import sqlite3
conn = sqlite3.connect('Experiment_simulator_database.db')
c = conn.cursor()

firstchoice = 1
secondchoice = 36

sqlcommand = "SELECT Outcome_ID FROM Reactions WHERE Choice_1 = firstchoice AND Choice_2 = secondchoice"
c.execute(sqlcommand)
result = c.fetchone()
print(result)

如何让 select 语句中的 firstchoice 和 secondchoice 采用我上面指定的值?

【问题讨论】:

  • 参考str.format
  • @AshishNitinPatil - 使用 str.format() 可能会导致 SQL 注入漏洞。 Obligatory XKCD
  • 哦,是的,当然,OP 必须清理他们的输入 :)

标签: python sql variables select sqlite


【解决方案1】:

您可以在 sql 中使用占位符并在调用执行时绑定值

 sqlcommand = "SELECT Outcome_ID FROM Reactions WHERE Choice_1 = ? AND Choice_2 = ?"
 c.execute(sqlcommand, (firstchoice, secondchoice,))

【讨论】:

    【解决方案2】:

    你可以在你使用的参数中传递这些变量。

    firstchoice = 1
    secondchoice = 36
    sqlcommand = "SELECT Outcome_ID FROM Reactions WHERE Choice_1 = " + firstchoice + "AND Choice_2 = " + secondchoice "
    c.execute(sqlcommand, firstchoice, secondchoice)
    

    【讨论】:

      猜你喜欢
      • 2013-09-28
      • 2017-03-29
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2014-11-29
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多