Ich möchte eine Oracle-Funktion aufrufen, die ein Objekt zurückgibt, indem ich cx_Oracle`s cursor.callfunc() verwende. Aber das funktioniert nichtgloaabl name cx nicht definiert
Hier können Sie meinen Code sehen:
import cx_Oracle
import json
import web
urls = (
"/", "index",
"/grid", "grid",
)
app = web.application(urls, globals(),web.profiler)
web.config.debug = True
connection = cx_Oracle.Connection("TEST_3D/[email protected]:1521/sdetest")
typeObj = connection.gettype("MDSYS.SDO_GEOMETRY")
class index:
def GET(self):
return "hallo moritz "
class grid:
def GET(self):
web.header('Access-Control-Allow-Origin', '*')
web.header('Access-Control-Allow-Credentials', 'true')
web.header('Content-Type', 'application/json')
cursor = connection.cursor()
cursor.arraysize = 10000 # default = 50
cursor.execute("""SELECT a.id AS building_nr, c.Geometry AS geometry, d.Classname FROM building a, THEMATIC_SURFACE b, SURFACE_GEOMETRY c, OBJECTCLASS d WHERE a.grid_id_400 = 4158 AND a.id = b.BUILDING_ID AND b.LOD2_MULTI_SURFACE_ID = c.ROOT_ID AND c.GEOMETRY IS NOT NULL AND b.OBJECTCLASS_ID = d.ID""")
obj = cursor.fetchone()
obj = obj[1]
print obj
cursor.callfunc("SDO2GEOJSON", cx.Oracle.OBJECT, [obj])
# Aufruf der App
if __name__ == "__main__":
app.run(web.profiler)
Fehlermeldung: an/grid globalen Namen 'cx' definiert nicht
Aber ich bin sicher, dass Cx_Oracle ist korrekt installiert. Außerdem benutze ich am Anfang cx_Oracle und das funktioniert.
Was ist los?
Sie haben einen Tippfehler in 'cursor.callfunc ("SDO2GEOJSON", cx.Oracle.OBJECT, [obj])' – janos