我有一张桌子:
create table employee (
employee_id NUMBER NOT NULL,
name VARCHAR2(255) NOT NULL,
notes VARCHAR2(4000),
created_by varchar2(255) not null,
created_at date default sysdate not null,
updated_by varchar2(255) not null,
updated_at date default sysdate not null,
PRIMARY KEY(vendor_id)
);
所以当我从SQL开发人员插入时:
insert into employee(employee_id, name,notes) values(1,'xyz','test');
自动填充create_by,created_at,updated_at和updated_by。
行成功插入。
然而,如果我尝试在python中使用cx_Oracle模块插入,
cursor.execute("INSERT INTO employee VALUES (:employee_id,:name,:notes)",
{
'employee_id' : max_value,
'name' : each_vendor,
'notes' : 'test'
}
)
它会抛出错误,说没有足够的值。
为什么会出现此错误?我该如何解决?
答案 0 :(得分:0)
答案很简单,与python无关。你的2 insert
陈述非常不同。
在第1个中,您明确命名要为其提供值的列:(employee_id, name,notes)
。但是,在Python中使用的insert
语句中,您不必按名称指定3列。因此,您的insert
语句需要您提供表格中所有列的值。
修复:明确命名3列:
cursor.execute("INSERT INTO employee (employee_id, name, notes) VALUES (:employee_id,:name,:notes)",
{
'employee_id' : max_value,
'name' : each_vendor,
'notes' : 'test'
}
)