【问题标题】:Select Statement in SQLite Python - Using Variables in WHERE clauseSQLite Python 中的 Select 语句 - 在 WHERE 子句中使用变量
【发布时间】:2020-04-27 16:20:46
【问题描述】:

假设我有一个类变量 restemail,它存储了我需要用来从 SQLite (Python) 中的 select 语句中进行排序的电子邮件 ID。每当我在 WHERE 子句之后引用该变量时,SQLite 将其视为一列并返回一个错误,指出这样的列不存在。像这样的:

  restemail=StringVar()
  Password=StringVar()

  def database(self):
      conn = sqlite3.connect('data.db')
      with conn:
            cursor=conn.cursor()
      strrest = self.restemail
      cursor.execute('SELECT * FROM Restaurant3 WHERE restemail = strrest')

谁能告诉我如何在我的 SQL 查询中使用变量而不将其视为列名? 任何帮助将不胜感激。

【问题讨论】:

    标签: sql python-3.x sqlite


    【解决方案1】:

    试试 sqlite3 变量替换语法:

    cursor.execute('SELECT * FROM Restaurant3 WHERE restemail = ?', (strrest,))
    

    【讨论】:

    • 这给了我这个错误: sqlite3.InterfaceError: Error binding parameter 0 - 可能是不支持的类型。有什么建议吗?
    • restemail的SQL类型是什么,strrest的Python类型是什么?那里有一个不匹配。也许尝试str(strrest) 要获取restemail 的SQL 类型,请在交互式sqlite3 提示符处执行.schema Restaurant3
    • 啊是的,我刚刚做了 strrest = self.restemail.get() (将其更改为字符串)。重新发送电子邮件的类型是 TEXT。谢谢它现在正在工作!
    猜你喜欢
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多