使用cx_Oracle进行批量插入:不一致的数据类型

2024-09-28 17:06:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Python和cx_Oracle将大量记录加载到Oracle数据库中。共识似乎是,您应该准备一个游标和executemany,对照一个行列表(每个thispost)。所以我的代码看起来像:

stmt = "INSERT INTO table (address, shape) VALUES (:1, :2)"
cursor.prepare(stmt)
rows = []
# Make huge list of rows
cursor.executemany(None, rows)

我传递的值如下所示:

^{pr2}$

问题是SDE.ST_Geometry()数据库函数被视为一个文本字符串而不是被计算,所以我得到了一个cx_Oracle.DatabaseError: ORA-00932: inconsistent datatypes: expected SDE.ST_GEOMETRY got CHAR。在

不能用cx_Oracle将数据库函数传递给准备好的游标吗?在


Tags: 函数数据库列表记录cursorrowsoraclest
2条回答

最后,我通过在准备好的语句中嵌入函数调用来解决这个问题:

stmt = "INSERT INTO table (address, shape) VALUES (:1, ST_Geometry(:2, 2272))"

给帕特里克·马坎德的帽子提示。在

简单的回答是,由于传递的是字符串,因此它被视为字符串。绑定值只被视为数据。在

但是看看尚未发布的cx逯Oracle主线https://bitbucket.org/anthony_tuininga/cx_oracle?它有新的对象支持。在

再看看这个提交“创建SDO_几何图形的附加示例”: https://bitbucket.org/anthony_tuininga/cx_oracle/commits/2672c799d987a8901ac1c4917e87ae4101a1d605

相关问题 更多 >