0
웹 서버가있어서 SQL 쿼리에 사용자 데이터를 추가합니다. psycopg는 작동하지만 cx_Oracle은 작동하지 않습니다.cx_Oracle에서 web.input이 실패합니다.
...
class grid:
def GET(self):
web.header('Access-Control-Allow-Origin', '*')
web.header('Access-Control-Allow-Credentials', 'true')
web.header('Content-Type', 'application/json')
data = web.input(ID='')
ido = int(data.ID)
a = [ido]
cur = connection.cursor()
cur.arraysize = 10000
query = "SELECT a.id AS building_nr, c.geometry.sdo_ordinates AS geometry, d.Classname AS polygon_typ FROM building a, THEMATIC_SURFACE b, SURFACE_GEOMETRY c, OBJECTCLASS d WHERE 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 AND a.grid_id_500 = %s;"
cur.execute(query, a)
실행 명령문까지 작동합니다. 나는 오류 메시지가 : (128)
가 어떻게 내 쿼리에 데이터를 추가 할 수있는 범위 내에 있지 순서 : '아스키'코덱의 위치는 36 바이트 0xfc를 디코딩 할 수 있습니까?
예, 바인드 변수를 사용하십시오! 성능을 향상시킬뿐만 아니라 보안을 향상시킵니다 (SQL 삽입 제거). cursor.execute (query, grid_id = data.ID) 또는 다음과 같은 cursor.execute ("select ... from ... a.id = : 1"을 수행 할 수도 있습니다. [데이터 .ID]). cx_Oracle은 사전 또는 키워드 인수를 사용하는 명명 된 매개 변수와 목록을 사용하는 숫자 매개 변수를 모두 지원합니다. –