Python cx_oracle читает результат запроса из графического интерфейса

У меня есть код Python, который создает графический интерфейс, в котором я делаю запрос, используя курсор (= curs), прося пользователя ввести серийный номер. В соответствии с этим числом таблица оракула возвращает результат (например, 1111111). После этого мне нужен второй запрос из другой таблицы: «выберите project_name из customer_desc, где customer_name_d = значение в поле клиента (= 1111111)». Любые идеи? Мне нужно сделать новое подключение к базе? Как я могу установить предложение where, чтобы читать текстовое значение, возвращаемое в текстовое поле графического интерфейса пользователя, со скрытыми переменными? Спасибо

   import cx_Oracle
   from tkinter import*
   from tkinter import messagebox

   def search():
   try:

    connstr='SOLVATIO/SOLVATIO@localhost'
    conn = cx_Oracle.connect(connstr)
    curs = conn.cursor()
    curs.execute("select * from customers where afm='%s'"%afm.get())
    result=curs.fetchone()
    company_name.set(result[1])
    e1.configure(state='disabled')
    conn.close()

    def clear():
   afm.set('')
   company_name.set('')
   e1.configure(state='normal')

   a1=Tk()
   a1.title('SOLVATIO')
   a1.geometry('600x300')
   ptitle=Label(a1, text='''search asset''')
   ptitle.grid(row=0, column=0, columnspan=2)

   afm=StringVar()
   company_name=StringVar()
   l1=Label (a1, text=' AFM ')
   e1=Entry(a1, textvariable=afm)
   l2=Label (a1, text=' customer ')
   e2=Entry(a1, textvariable=company_name)
   b1=Button(a1, text=' Search ', command=search)
   l1.grid(row=1, column=0)
   e1.grid(row=1, column=1)
   l2.grid(row=2, column=0)
   e2.grid(row=2, column=1)
   b1.grid(row=1, column=2)
   a1.mainloop()

В вашем вопросе недостаточно подробностей о том, как вы вызываете / запускаете Python, чтобы ответить (если кто-то не может догадаться, что такое% afm). В более важной теме вы ДОЛЖНЫ использовать переменные связывания вместо построения строки% s, иначе у вас будет большая дыра в безопасности и будет плохая масштабируемость. Ознакомьтесь с некоторыми примерами cx_Oracle или следуйте инструкциям: github.com/oracle/python-cx_Oracle/tree/master/samples/tutor‌ ial

Christopher Jones 09.06.2018 03:20
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
634
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы почти там. Чтобы использовать переменные связывания, вам необходимо сделать следующее:

curs.execute("select * from customers where afm=:1", [afm.get()])

Остальная часть вашего кода работала как есть.

Спасибо, попробовал, сработало. Что касается второй части моего вопроса, как поместить во второй запрос значение первого? я имею в виду, есть какие-либо ссылки или предложения, каков синтаксис чтения из текстового поля gui?

veg123 10.06.2018 16:01

Какой второй запрос? Пример, который я привел с клиентами, - это чтение из текстового поля графического интерфейса пользователя и использование его содержимого в качестве переменной привязки ...

Anthony Tuininga 11.06.2018 16:33

Извините, я неправильно понял ваш ответ из-за столбца «afm», который я использовал при первом выборе. Это сработало, большое спасибо !!!

veg123 12.06.2018 17:09

Другие вопросы по теме