Skip to main content
 首页 » 编程设计

python 3.5.2 "takes from 2 to 3 positional arguments but 4 were given"

2025年05月04日32duanxz

我正在用 python 编写一个程序,该程序连接到 mysql 数据库并可以访问和操作它。我正在使用 PyMySQL 来执行此操作,但是我对程序中不断出现的错误感到困惑。这是错误:

cursor.execute("SELECT * FROM Bookings WHERE ? = ?", record, recordtype) 
TypeError: execute() takes from 2 to 3 positional arguments but 4 were given 

但我在我的代码中没有看到任何错误(可能有点自信)。

def findbooking(): 
   recordtype =  input("Which field do you want to search?: ") 
   record = input("Enter what you want to search: ") 
   findbookingsql(record, recordtype) 
 
def findbookingsql(record, recordtype):  #Connect to Database and find record specified 
    conn = sql.connect(server,user, password,database) 
    cursor = conn.cursor() 
    cursor.execute("SELECT * FROM Bookings WHERE ? = ?",recordtype,record) 
    row = cursor.fetchone() 
    conn.close() 
    return row 

请您参考如下方法:

将参数封装在一个元组中,而不是独立的参数:

cursor.execute("SELECT * FROM Bookings WHERE ? = ?", (record, recordtype))