Ошибка программирования psycopg2 при использовании.format()
Я не уверен, что именно здесь происходит, но это может иметь какое-то отношение к формату в python. Запуск этого вызывает ошибку.
x = '00000201000012EB'
sql = """ SELECT * FROM table WHERE id = {} """.format(x)
conn.execute(sql)
Я получаю сообщение об ошибке: синтаксическая ошибка рядом с "EB"
Однако, когда я запускаю команду, как это:
sql = """ SELECT * FROM table WHERE id = '00000201000012EB' """
conn.execute(sql)
Работает нормально.
Что-то не так с тем, как я форматирую этот SQL-оператор?
2 ответа
Решение
Используйте переменную в качестве аргумента для execute()
:
cur.execute(""" SELECT * FROM my_table WHERE id = %s """, (x,))
Если вы решили использовать format()
, вы должны добавить одинарные кавычки вокруг заполнителя:
sql = """ SELECT * FROM my_table WHERE id = '{}' """.format(x)
Верьте этому или нет, это было исправлено, добавляя больше кавычек в строку.
это наконец сработало.
x = '00000201000012EB'
sql = """ SELECT * FROM table WHERE id = {} """.format("'" + x + "'")
Поскольку для оператора sql требовался другой набор кавычек, я просто добавил их, чтобы убедиться, что он обрабатывается как собственная строка.