我制作了一个简单的Python应用程序,希望将两个文本字段“ID”和“TEXT”传递到Oracle insert语句中。应用程序正确打开,函数似乎正常工作,但这些字段中的inputtext没有传递到Oracle语句中。
Python代码如下;
import PySimpleGUI as sg
import cx_Oracle
import pandas as pd
layout =[
[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 cx_Oracle.connect(user="blinx", password="ComCraft8",
dsn="10.10.2.25:1521/ORCL",
encoding="UTF-8") as connection:
cur=connection.cursor()
sql = """insert into schema.table (ID, TEXT) values (nextval, ['-TEXT-'])"""
cur.close()
elif event == 'Quit':
window.close()
尝试此操作,应用程序加载/构建,但未抛出错误,但未插入记录。
2条答案
按热度按时间lp0sw83n1#
最好为所有的Input元素设置键,如'UserName','Password','Hostname','Port','SID','-ID-'和'-TEXT-'(代码中缺少一个破折号),然后您可以通过它们的键获取Input元素的内容,如
values['UserName']
。语法-以下是MySQL的INSERT INTO语句的语法。
插入到表名(列1,列2,列3,...列N)值(值1,值2,值3,...值N);
以下语句似乎是错误代码,错误值为
['-ID-']
和['-TEXT-']
smdncfj32#
试试这个(用python-oracledb编写,这是cx_Oracle的升级版本,但是可以在下面的代码中用cx_Oracle替换oracledb,它应该仍然可以工作):
换句话说:
nextval
无效;必须在前面加上序列名错误
ORA-00936
表示SQL语句无效,因为存在"缺少表达式"。