我试图使用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
将数据库函数传递给准备好的游标吗?在
最后,我通过在准备好的语句中嵌入函数调用来解决这个问题:
给帕特里克·马坎德的帽子提示。在
简单的回答是,由于传递的是字符串,因此它被视为字符串。绑定值只被视为数据。在
但是看看尚未发布的cx逯Oracle主线https://bitbucket.org/anthony_tuininga/cx_oracle?它有新的对象支持。在
再看看这个提交“创建SDO_几何图形的附加示例”: https://bitbucket.org/anthony_tuininga/cx_oracle/commits/2672c799d987a8901ac1c4917e87ae4101a1d605
相关问题 更多 >
编程相关推荐