2016-08-02 18 views
0

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?

+0

Sie haben einen Tippfehler in 'cursor.callfunc ("SDO2GEOJSON", cx.Oracle.OBJECT, [obj])' – janos

Antwort

1

Einfache Typo. In der Zeile sollte

cursor.callfunc("SDO2GEOJSON", cx.Oracle.OBJECT, [obj]) 

Sie verwenden cx_Oracle.OBJECT

+0

ok danke. jetzt ist dieser Fehler behoben. Aber ich bekomme einen anderen: ** cursor.callfunc ("SDO2GEOJSON", cx_Oracle.OBJECT, [obj]) InterfaceError: Objekttyp nicht mit Bindevariable verbunden ** – Moehre