查询错误消息:提供的绑定数量不正确[重复]

问题描述 投票:0回答:1

我创建了一个sqlite3 python数据库并保存了一些记录;打印所有记录有效,但是当尝试查找特定记录时,尽管该记录存在于表中,但输出列表始终为空,所以我尝试使用 ?在 WHERE sqlite 部分中,而不是放置变量名称:name 和 appelido。 数据从 Tkinter 表单的输入中获取并存储到数据库中,因此变量名称为:nombre 和 apellido。这些变量被保存到后缀为main的全局变量中,并在程序的其他模块中声明。 VarChar 是他们的类型。谢谢。 错误信息:当前语句使用 2,并且提供了 0 个。

def check_record_exists(nombre, apellido):

   name_main = nombre
   lastname_main = apellido 
   con_pd = db_connect()
   con_pd.row_factory = sqlite3.Row
   cursor_pd = con_pd.cursor()
   query= '''SELECT  FIRST_NAME, LAST_NAME, 
       DRIVER_LICENSE FROM DONORS
       WHERE FIRST_NAME= ?  AND LAST_NAME= ? 
        '''
   cursor_pd.execute(query)
   resultados_1:list(sqlite3.Row) =cursor_pd.fetchall()
   check_resultados_empty = len(resultados_1)

   if check_resultados_empty == 0:
      print("No record found")

   else:
      for row in resultados_1:
         print("Record:",row[0],row[1])

   con_pd.commit() 
   cursor_pd.close()
   con_pd.close()  
python database sqlite record
1个回答
0
投票

您当前在 SQL 查询中使用字符串文字“nombre”和“apellido”,但您打算使用变量 nombre 和 apellido。

 import sqlite3
 def check_record_exists(nombre, apellido):
        con_pd = db_connect()
        con_pd.row_factory = sqlite3.Row
        cursor_pd = con_pd.cursor()
        query = '''SELECT FIRST_NAME, LAST_NAME, DRIVER_LICENSE FROM DONORS
                   WHERE FIRST_NAME = ? AND LAST_NAME = ?'''
    
        cursor_pd.execute(query, (nombre, apellido))
        resultados_1 = cursor_pd.fetchall()
        check_resultados_empty = len(resultados_1)
    
        if check_resultados_empty == 0:
            print("No record found")
        else:
            for row in resultados_1:
                print("Record:", row[0], row[1])
    
        con_pd.commit()
        cursor_pd.close()
        con_pd.close()
© www.soinside.com 2019 - 2024. All rights reserved.