You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python PySimpleGUI输入文本无法传入Oracle插入语句问题求助

问题解决步骤

你的代码存在三个关键问题,导致数据无法正确插入Oracle数据库:

  1. 错误获取输入值
    你当前用bind_values = ['-TEXT-']传入的是PySimpleGUI输入框的键名,而非用户实际输入的内容。正确做法是通过values字典提取对应键的输入值:

    bind_values = [values['-TEXT-']]
    
  2. 缺少事务提交操作
    Oracle数据库默认不会自动提交事务,执行insert语句后必须手动提交,否则数据仅停留在事务中,不会写入数据表。需在cur.execute后添加提交语句:

    connection.commit()
    
  3. 未实现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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 01:36:30