2016-08-02 2 views
0

cx_Oracle의 cursor.callfunc()를 사용하여 객체를 반환하는 Oracle 함수를 호출하고 싶습니다.gloabl 이름 cx가 정의되지 않았습니다.

을 정의되지 않은 에서/그리드 전역 이름 'CX'그러나 나는 확신 :

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) 

오류 메시지 :하지만 당신이 내 코드를 볼 수 있습니다 여기에

작동하지 않습니다 cx_Oracle이 올바르게 설치되었습니다. 또한 나는 처음에 import cx_Oracle을 사용하는데 이것이 효과적이다.

무엇이 잘못 되었나요?

+0

하는 당신은 cursor.callfunc'에서 오타 ("SDO2GEOJSON", cx.Oracle.OBJECT, [OBJ])' – janos

답변

1

단순한 오타가 있습니다. 라인

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

에서 당신은 cx_Oracle.OBJECT

+0

확인 감사를 사용해야합니다. 이제이 오류가 해결되었습니다. 그러나 나는 또 다른 하나를 얻습니다 : ** cursor.callfunc ("SDO2GEOJSON", cx_Oracle.OBJECT, [obj]) InterfaceError : 바인드 변수와 연관되지 않은 객체 유형 ** – Moehre

관련 문제