拥有自己的Oracle数据类型
CREATE TYPE lids_geomtype AS OBJECT(
type NUMBER (6),
source_type NUMBER (4)
);
我可以通过cx_Oracle读取此数据类型。这是例子:
sql = 'SELECT geomtype FROM poly_gr where id = 4034'
cur.execute(sql)
data = cur.fetchall()
geom = data[0][0]
print type(geom)
print geom.TYPE, geom.SOURCE_TYPE
print geom.type
************** Result is *****************
<type 'cx_Oracle.OBJECT'>
1002.0 6.0
<cx_Oracle.ObjectType TARGET.LIDS_GEOMTYPE>
但是我通过cx_Oracle来解决INSERT问题。
sql = 'INSERT INTO poly (geomtype) VALUES (:1)'
cur.execute(sql,"TARGET.LIDS_GEOMTYPE(1002,6)")
上面的代码是错误的,因为数据类型不是VARCHAR2。你能告诉我怎样才能为插入创建cx_Oracle.ObjectType TARGET.LIDS_GEOMTYPE?
sql = 'INSERT INTO poly (geomtype) VALUES (%s)' %"TARGET.LIDS_GEOMTYPE(1002,6)"
cur.execute(sql)
如下所述的代码是可以的。但是我将在下一步使用executemany()并且有必要的变量。
答案 0 :(得分:0)
更改您的表格,将 geomtype 的数据类型更改为您定义的对象
ALTER TABLE poly MODIFY geomtype lids_geomtype;