В PostgreSQL ошибку TypeError: не все аргументы преобразуются в строку форматирования
Я выполняю запрос в psycopg2, связанный с базой данных PostgreSQL. Вот код, о котором идет речь:
with open('dataFile.txt', 'r') as f:
lines = f.readlines()
newLines = [line[:-1] for line in lines]
curr=conn.cursor()
lineString = ','.join(newLines)
curr.execute("SELECT fields.fieldkey FROM fields LEFT JOIN zone ON zone.fieldkey=fields.fieldkey WHERE zone.zonekey = %s;", (newLines[0]))
rows = curr.fetchall()
нет проблем с подключением к БД, и тип строк[0] определенно является строкой, я проверил это. Есть ли что-то неправильное в синтаксисе моего форматирования строк?
ошибка, которую я получаю, чтобы уточнить это:
TypeError: not all arguments converted during string formatting
1 ответов
должна быть запятая после lines[0]
чтобы сделать это кортеж.
curr.execute("""
SELECT fields.fieldkey
FROM fields
LEFT JOIN zone ON zone.fieldkey=fields.fieldkey
WHERE zone.zonekey = %s;
""", (lines[0],))
С execute
метод ожидает последовательность (или отображение) он повторяет строку, которую вы предоставили, в круглых скобках. Поэтому необходимо явно сделать этот кортеж. Тот же результат, с более четким кодом, можно получить с помощью tuple
функции:
(tuple(lines[0]))