[Zope-DB] executemany
Gary Aviv
gary.aviv at intec.us
Tue Feb 24 18:35:48 EST 2004
Thank you for a great module.
I am using Python 2.3, Oracle 8i, DCOracle2 1.3 beta
My issue is with executemany. In particular, I attempted to insert
7 rows unto a table. Here is script excerpt.
-------------------------------------
List = [
('1', 'abc', DCOracle2.Date(2004, 2, 1),20023.15),
('2', 'abc', DCOracle2.Date(2004, 2, 1),12323.12),
('3', 'abc', DCOracle2.Date(2004, 2, 1),5423344.06),
('4', 'abc', DCOracle2.Date(2004, 2, 1),20344302.90),
('5', 'abc', DCOracle2.Date(2004, 2, 1),4534534.54),
('6', 'abc', DCOracle2.Date(2004, 2, 1),768786.76),
('7', 'abc', DCOracle2.Date(2004, 2, 1),124.01)
]
sql = """INSERT INTO gary_test (prod_id, cust_id, time_id, amount)
VALUES (:1, :2, :3, :4)"""
cursor = dbc.prepare(sql)
try:
x = cursor.executemany(sql, List )
except DCOracle2.DatabaseError, e:
print str(e)
-------------------------------------
Since the table has a unique primary key, we get:
(1, 'ORA-00001: unique constraint (IAT_LOOKUP.SYS_C003795) violated')
Now the issue is to discover which row actually had the error.
I tried cursor.rowcount but it is -1.
Next I tried:
R = cursor.fetchone()
which yielded a Segmentation fault. The fault occurs
in the routine Cursor_ResultSet when it calls
PyList_Size
for (i = 1; i <= PyList_Size(self->definition); i++) {
mode = OCI_DEFAULT;
...
}
because self->definition is NULL.
What is the correct way to find out which row had the error.
Thank you,
Gary.Aviv at intec.us
More information about the Zope-DB
mailing list