TypeError: execute () принимает от 2 до 3 позиционных аргументов, но было дано 7 - PullRequest
3 голосов
/ 30 марта 2019

У меня есть следующий код, и он выдает ошибку TypeError: execute () принимает от 2 до 3 позиционных аргументов, но 7 были заданы.Я не уверен, что это правильно, но вот оно:

result_time = cur.execute("SELECT appointment_id FROM appointments WHERE appointment_time =%s", [appointment_time], "AND appointment_date =%s", [appointment_date], "AND doctor_id =%s", [actual_doctor_id.get('doctor_id')])

Так что я хочу получить конкретное назначение_, когда все требования выполнены.

1 Ответ

2 голосов
/ 30 марта 2019

cursor.execute принимает sql и кортеж params - вы дали парам по одному - следовательно, вы "набили" его и получили

TypeError: execute () принимает от 2 до 3 позиционных аргументов, но было дано 7

Измените ваш код, содержащий 1 SQL-оператор и один кортеж с параметрами:

result_time = cur.execute(
    "SELECT appointment_id FROM appointments WHERE appointment_time = %s AND appointment_date = %s AND doctor_id = %s", 
    ( appointment_time, appointment_date, actual_doctor_id.get('doctor_id')) )          

и это будет работать.

 cursor.execute( slq, ( param1, param2, ... ) )
 #                      this is all a tuple - hence the 2nd allowed param to execute.

См. Например MySQL-документация или используйте http://bobby -tables.com / python в качестве краткого справочника.

...