mysql .connector.errors.ProgrammingError: 1054 (42S22): неизвестный столбец 'PY_VAR0' в 'where clause' - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь создать приложение tkinter (очень быстро), которое действительно дает результаты поиска dr aws из моей базы данных, но я хочу, чтобы пользователь указывал имя столбца, поэтому я использую раскрывающийся список, а затем они могут выбирать из раскрывающийся список, но когда я использую эту переменную в команде базы данных, она возвращает ошибку mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column 'PY_VAR0' in 'where clause'. Заранее спасибо :)

Код:

from tkinter import *
import mysql.connector as mysql
import datetime

root = Tk()

def db():
    con = mysql.connect(host='localhost', user='root', password='monkey123', database='BOOK')
    c = con.cursor()
    c.execute(f"SELECT * from lessc where `{g}` like '{e1.get()}%';")

    rec = c.fetchall()

    print_record = ""
    for recs in rec:
        print_record += 'BOOK: ' + str(recs[1]) + '\t' + ' Author: ' + str(recs[2]) + "\n"

    query_label = Label(root,text=print_record)
    query_label.pack()
    c.execute('commit')
    con.close()
    e1.delete(0,END)

l1 = Label(root,text='Book name')
l1.pack()

e1 = Entry(root)
e1.pack()

b1 = Button(root,text='Search',command=db)
b1.pack()

b2 = Button(root,text='Exit',command=root.destroy)
b2.pack()

gen = ['Sl.no.','Title of the book','Authors','Editors','Revised by','Edition','Accession no.','Call no.','Item','Subject','Year','ISBN','Publisher','Updated on','Price','Supplier']
g = StringVar()
g.set('Choose Search method')
opt_g = OptionMenu(root,g,*gen)
opt_g.pack()

root.mainloop()

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Сделайте

c.execute("SELECT * from lessc where `Title of the book` like %s", (f'{e1.get()}%',)) 

вместо этого для правильного цитирования и подстановки параметров.

0 голосов
/ 09 мая 2020

Ответ довольно прост, просто используйте (в моем случае) g.get() вместо меня, используя только g, это была ошибка при кодировании. Спасибо, ребята :)

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