Ошибка типа: не все аргументы, преобразованные во время форматирования строки в python, соединяются с postgresql - PullRequest
0 голосов
/ 20 марта 2020

Кажется, что все без ошибок в коде, но не знаю, почему я получаю это. Я создавал простое приложение GUI, в котором данные пользователя хранятся в базе данных (postgresql), а также они смогут искать записи в базе данных. Эта конкретная ошибка возникает в этой функции search (), поэтому я не добавил остальную часть кода. При необходимости я могу добавить их. Надеюсь, я получу некоторые решения от этого сообщества.

def search(id):
    conn = psycopg2.connect(dbname="postgres",user="postgres",password="1018",host="localhost",port="5432")
    mycursor = conn.cursor()
    query = '''select * from demotab where id=%s '''
    mycursor.execute(query, (id))
    row = mycursor.fetchone()
    print(row)
    conn.commit()
    conn.close()

Получение этой ошибки ниже

Exception in Tkinter callback
Traceback (most recent call last):
  File "c:\programdata\anaconda3\lib\tkinter\__init__.py", line 1702, in __call__
    return self.func(*args)
  File "appwithDB.py", line 51, in <lambda>
    search_button = Button(newframe, text="Search", command=lambda : search(entry_search.get()))
  File "appwithDB.py", line 71, in search
    mycursor.execute(query, (id))
TypeError: not all arguments converted during string formatting

1 Ответ

0 голосов
/ 20 марта 2020

Второй аргумент mycursor.execute должен быть итерацией, содержащим значения для вставки в запрос

Вы можете использовать список: mycursor.execute(query, [id]) или одноэлементный кортеж: mycursor.execute(query, (id,))

Обратите внимание на запятую. (id) совпадает с id. В python запятая создает кортеж, а не скобка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...