Python PySimpleGUI输入文本无法传入Oracle插入语句问题求助
问题解决步骤
你的代码存在三个关键问题,导致数据无法正确插入Oracle数据库:
错误获取输入值
你当前用bind_values = ['-TEXT-']传入的是PySimpleGUI输入框的键名,而非用户实际输入的内容。正确做法是通过values字典提取对应键的输入值:bind_values = [values['-TEXT-']]缺少事务提交操作
Oracle数据库默认不会自动提交事务,执行insert语句后必须手动提交,否则数据仅停留在事务中,不会写入数据表。需在cur.execute后添加提交语句:connection.commit()未实现ID字段的输入与传入
你提到要传入ID和TEXT两个字段,但当前布局中没有ID输入框,SQL语句也只插入了TEXT字段。若ID需用户输入,先修改布局添加ID输入框:layout =[ [sg.Text('ID',size=(10,1)),sg.InputText("", key='-ID-')], [sg.Text('Text',size=(10,1)),sg.InputText("", key='-TEXT-')], [sg.Button('Submit'),sg.Button('Quit')] ]再同步修改SQL语句和绑定值:
sql = """ insert into danaos.z_blinx_notes (ID, TEXT) values (:1, :2)""" bind_values = [values['-ID-'], values['-TEXT-']]
修正后的完整代码
import PySimpleGUI as sg import oracledb oracledb.init_oracle_client(lib_dir=r"C:\oracle\instantclient_11_2") layout =[ [sg.Text('ID',size=(10,1)),sg.InputText("", key='-ID-')], [sg.Text('Text',size=(10,1)),sg.InputText("", key='-TEXT-')], [sg.Button('Submit'),sg.Button('Quit')] ] sg.theme('dark grey 6') window = sg.Window('Oracle - Test Insert',layout) event,values = window.read() if event == 'Submit': with oracledb.connect(user="blinx", password="ComCraft8", dsn="10.10.2.25:1521/ORCL") as connection: sql = """ insert into danaos.z_blinx_notes (ID, TEXT) values (:1, :2)""" bind_values = [values['-ID-'], values['-TEXT-']] with connection.cursor() as cur: cur.execute(sql, bind_values) connection.commit() # 提交事务 elif event == 'Quit': window.close()
内容的提问来源于stack exchange,提问作者M Davie
相关产品推荐
相关产品推荐

