У меня есть код 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()


Вы почти там. Чтобы использовать переменные связывания, вам необходимо сделать следующее:
curs.execute("select * from customers where afm=:1", [afm.get()])
Остальная часть вашего кода работала как есть.
Спасибо, попробовал, сработало. Что касается второй части моего вопроса, как поместить во второй запрос значение первого? я имею в виду, есть какие-либо ссылки или предложения, каков синтаксис чтения из текстового поля gui?
Какой второй запрос? Пример, который я привел с клиентами, - это чтение из текстового поля графического интерфейса пользователя и использование его содержимого в качестве переменной привязки ...
Извините, я неправильно понял ваш ответ из-за столбца «afm», который я использовал при первом выборе. Это сработало, большое спасибо !!!
В вашем вопросе недостаточно подробностей о том, как вы вызываете / запускаете Python, чтобы ответить (если кто-то не может догадаться, что такое% afm). В более важной теме вы ДОЛЖНЫ использовать переменные связывания вместо построения строки% s, иначе у вас будет большая дыра в безопасности и будет плохая масштабируемость. Ознакомьтесь с некоторыми примерами cx_Oracle или следуйте инструкциям: github.com/oracle/python-cx_Oracle/tree/master/samples/tutor ial