2017-01-23 4 views
1

При попытке загрузить PlayerScore с кодомpsycopg2.ProgrammingError: колонка «ваше имя» не существует

if Number.PlayerScore > Score.interact_database("SELECT Score FROM score WHERE Name = %s;" % Player_Name, False,)[0][0] 

к базе данных PostgreSQL в Python Я получаю эту ошибку: psycopg2.ProgrammingError: column "your name" does not exist, где «Ваше имя» является переменной Player_Name. Однако, когда я запускаю его в Инструменте запросов PostgreSQL, он отлично работает. Кто-нибудь знает, почему появляются эти ошибки и как я могу предотвратить это снова в будущем?

ответ

1

http://initd.org/psycopg/docs/usage.html#the-problem-with-the-query-parameters

Я думаю, что мы должны были бы видеть больше кода, но в соответствии с Документами:

Never, never, NEVER use Python string concatenation (+) or string parameters interpolation (%) to pass variables to a SQL query string. Not even at gunpoint.

Попробуйте передавая параметры в качестве второго аргумента в вашем cursor.execute() метод. Использование примерно:

cursor.execute("""SELECT Score FROM score WHERE Name = %(player)s""", {'player': player_name }) 
cursor.fetchone() 

Должно работать. Он также может принимать кортеж значений.

+0

Спасибо, это сработало! – JasperMW

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