2012-09-27 2 views
0

I 파이썬파이썬 처리 SQL 레코드

code.py

conn = cx_Oracle.connect('pass the connection string') 
cursor = conn.cursor() 
sql = "select * from emp table" 
cursor.execute(sql) 
result =cursor.fetchall() 

for row in result: 
    name = row[0] 
    age = row[1] 

질문 DB를으로부터 레코드를 처리하는 방법이있다 : 대신 행으로 하드 코딩 [0], 행은 [1]는 거기에 직접 을 열 이름을 얻을 수있는 방법?

답변

1

cursor.description 특성을 갖는다; 이것은 일련의 튜플입니다. 각 튜플은 결과의 열을 설명하며 첫 번째 값은 이름입니다.

각 행의 딕셔너리를 구성하는 데 사용할 수

for x in result: 
    row = { d[0].lower(): col for (d, col) in zip(cursor.description, x) } 
    name = row['name'] 
    age = row['age'] 

.description 속성은 Python DB API 2.0에서 자세히 설명한다.

+0

+1. 두 가지 사소한 오타가 있었지만 기본 아이디어는 정확히 맞습니다. – abarnert

+0

@abarnert : 수정 주셔서 감사합니다. :-) –

+0

딕셔너리 = {} = {..... dict1 D [0] .lower()에 우편 (d, COL) 용 COL (self.cursor.description 행)} – user1050619