tests. Although the two are aliases of one another, it makes sense to be consistent and to use the one that the DB API prefers as well.
59 lines
2.0 KiB
Python
59 lines
2.0 KiB
Python
#------------------------------------------------------------------------------
|
|
# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
|
|
#
|
|
# Portions Copyright 2007-2015, Anthony Tuininga. All rights reserved.
|
|
#
|
|
# Portions Copyright 2001-2007, Computronix (Canada) Ltd., Edmonton, Alberta,
|
|
# Canada. All rights reserved.
|
|
#------------------------------------------------------------------------------
|
|
|
|
#------------------------------------------------------------------------------
|
|
# InsertGeometry.py
|
|
# This script demonstrates the ability to create Oracle objects (this example
|
|
# uses SDO_GEOMETRY) and insert them into a table.
|
|
#
|
|
# This script requires cx_Oracle 5.3 and higher.
|
|
#------------------------------------------------------------------------------
|
|
|
|
from __future__ import print_function
|
|
|
|
import cx_Oracle
|
|
import SampleEnv
|
|
|
|
# create and populate Oracle objects
|
|
connection = cx_Oracle.connect(SampleEnv.MAIN_CONNECT_STRING)
|
|
typeObj = connection.gettype("MDSYS.SDO_GEOMETRY")
|
|
elementInfoTypeObj = connection.gettype("MDSYS.SDO_ELEM_INFO_ARRAY")
|
|
ordinateTypeObj = connection.gettype("MDSYS.SDO_ORDINATE_ARRAY")
|
|
obj = typeObj.newobject()
|
|
obj.SDO_GTYPE = 2003
|
|
obj.SDO_ELEM_INFO = elementInfoTypeObj.newobject()
|
|
obj.SDO_ELEM_INFO.extend([1, 1003, 3])
|
|
obj.SDO_ORDINATES = ordinateTypeObj.newobject()
|
|
obj.SDO_ORDINATES.extend([1, 1, 5, 7])
|
|
print("Created object", obj)
|
|
|
|
# create table, if necessary
|
|
cursor = connection.cursor()
|
|
cursor.execute("""
|
|
select count(*)
|
|
from user_tables
|
|
where table_name = 'TESTGEOMETRY'""")
|
|
count, = cursor.fetchone()
|
|
if count == 0:
|
|
print("Creating table...")
|
|
cursor.execute("""
|
|
create table TestGeometry (
|
|
IntCol number(9) not null,
|
|
Geometry MDSYS.SDO_GEOMETRY not null
|
|
)""")
|
|
|
|
# remove all existing rows and then add a new one
|
|
print("Removing any existing rows...")
|
|
cursor.execute("delete from TestGeometry")
|
|
print("Adding row to table...")
|
|
cursor.execute("insert into TestGeometry values (1, :obj)", obj = obj)
|
|
connection.commit()
|
|
print("Success!")
|
|
|