2015-01-16 3 views
0

Я новичок в python, и у меня есть ошибка, которую я пытался решить самостоятельно в течение нескольких часов без результата. (Я использую PyCharm & SQLite) .Здесь в мой код:SQLite/python: объект 'str' не является вызываемой ошибкой

Id = cur.execute("select id from abonnement where libelle=%s and prix=%s and estPackGar=%s ;" (abonnement.libelle, abonnement.prix, abonnement.estPackGar)) 

И это то, что я для этой строки:

TypeError: 'str' object is not callable 

Я не имею ни малейшего понятия о том, что является причиной этого. Любая идея, пожалуйста?

+0

ли это весь ваш код? – bish

ответ

1

Вам не хватает %, поэтому форматирование не применяется, как вам бы хотелось. Вместо этого вам нужно:

Id = cur.execute("select id from abonnement where libelle=%s and prix=%s and estPackGar=%s ;" % (abonnement.libelle, abonnement.prix, abonnement.estPackGar)) 

А почему вы получите ошибку вы получаете: По сути ваших ошибок приводит сообщение от наличия скобки непосредственно после строки, упрощенный пример будет

"abc %s"(variable) 

В этом случае python пытается вызвать "abc %s", как если бы это была функция, которая терпит неудачу, потому что это фактически строка. Вот почему вы получаете ошибку «str не вызываемой». Однако, если вы используете строку правильно форматирования, то вы получите желаемые результаты:

"abc %s"%(variable) 

я предлагаю использовать вместо .format однако, увидеть этот PEP: https://www.python.org/dev/peps/pep-3101/ и этот вопрос для более подробной информации о том, что: Python string formatting: % vs. .format

+0

Спасибо вам большое :-) – user3836861

+0

@ user3836861, рад, что это помогло. Я знаю, что в первый раз, когда я столкнулся с этой ошибкой, я был в тупике, потому что это, казалось бы, не имело никакого отношения к коду, который я использовал. – shuttle87

Смежные вопросы