본문 바로가기
컴퓨터관련/Python

[python]파이썬에서 컬럼명으로 데이터 가져오기

by 빛과 어둠사이 2019. 9. 30.
728x90
반응형
SMALL

지금까지 python에서 DB에 접속해서

데이터를 가져오고

업데이트하는 등의 작업은

해 보았습니다.

 

그런데 데이터를 가져올 때,

항상 인덱스번호를 기준으로

데이터를 가져오게 되었었습니다.

 

index번호를 기준으로 가져오게되면

소스를 유지보수 하는 과정에서나

소스 분석을 할 때

불편합니다.

맨 처음 개발하는 입장에서도

불편합니다.

 

index번호에 따른 순서이기 때문에

해당 데이터의 인덱스가 몇번인지

번호를 다 알아야 하기 때문입니다.

 

그래서 이번에는 indexNo가 아닌,

컬럼명으로 데이터를 가져올 수 있는 방법을

정리해보고자 합니다.

 

 

컬럼명으로 데이터를 가져오기 위해서는

DB연결을 설정할 때,

설정값을 하나 더 추가해주면 됩니다.

as_dict를 추가해주면 됩니다.

 

기본값은 False로,

생략을 하게 되면

False로 설정이 되는 것입니다.

 

 

우선 기본적으로 False로 설정을 해 보았습니다.

 

conn = pymssql.connect(server="IP", user="계정", password="비밀번호", database="DB명", as_dict=False) 
cursor = conn.cursor()

 

위처럼 설정을 하면 됩니다.

 

 

위처럼 설정을 하였습니다.

그리고 전체 소스는 다음과 같습니다.

 

import pymssql   
#DB연결 
conn = pymssql.connect(server="IP", user="계정", password="비밀번호", database="DB명", as_dict=False)  
cursor = conn.cursor()  

#select 쿼리 작성 
cursor.execute("select id, member_name from test_member")  
row = cursor.fetchone()  

while row:     
	print("id = " + str(row[0]) + ", member_name = " + str(row[1]))     
    row = cursor.fetchone()  

print () 

conn.close()

 

위처럼 코딩을 하였습니다.

 

 

위처럼 하고 

파이썬을 실행시켜 보았습니다.

그랬더니 결과는 다음과 같이 나옵니다.

 

 

원래 했던 것과 동일하게 나옵니다.

위에 얘기한 것과 마찬가지로

설정을 별도로 하지 않으면

False로 설정이 되기 때문에

동일하기 때문입니다.

 

 

그러면 이번엔 as_dict를 True로 설정해보겠습니다.

 

conn = pymssql.connect(server="IP", user="계정", password="비밀번호", database="DB명", as_dict=True) 
cursor = conn.cursor()

 

위처럼 설정을 하면 됩니다.

 

 

위처럼 이렇게 설정을 하고

코딩을 해 보았습니다.

 

import pymssql   
#DB연결 
conn = pymssql.connect(server="IP", user="계정", password="비밀번호", database="DB명", as_dict=True) 
cursor = conn.cursor()  

#select 쿼리 작성 
cursor.execute("select id, member_name from test_member")  

row = cursor.fetchone()  
while row:     
	print("id = " + str(row[0]) + ", member_name = " + str(row[1]))     
    row = cursor.fetchone()  
    
print () 

conn.close()

 

위처럼 코딩을 하였습니다.

as_dict 설정값만 변경을 한 것입니다.

 

 

그리고 실행을 하면

결과는 다음과 같습니다.

 

 

위처럼 에러가 발생을 하게 됩니다.

as_dict를 True로 설정하면

무조건 colunm Name으로 

값을 가지고 와야 합니다.

기존처럼 Index번호로 가져오려고하면

에러가 발생을 하는 것입니다.

 

 

그러면 이번엔 인덱스번호가 아닌,

컬럼명으로 데이터를 가지고 오도록

소스를 바꿔보았습니다.

 

import pymssql   

#DB연결 
conn = pymssql.connect(server="IP", user="계정", password="비밀번호", database="DB명", autocommit=True, as_dict=True) 
cursor = conn.cursor()  

#select 쿼리 작성 
cursor.execute("select id, member_name from test_member")  

row = cursor.fetchone()  
while row:     
	#print("id = " + str(row[0]) + ", member_name = " + str(row[1]))     
    print("id2 = " + str(row["id"]) + ", member_name = " + str(row["member_name"]))     
    row = cursor.fetchone()  
    
print () 

conn.close()

 

위처럼 하였습니다.

print부분에 인덱스 번호가 아닌,

컬럼명을 지정하였습니다.

 

 

위처럼 코딩을 한 것입니다.

그리고 실행을 해 보았습니다.

그랬더니 결과는 다음과 같이 나왔습니다.

 

 

위처럼 문제 없이

원하는 결과가 나오는 것을

볼 수 있었습니다.

 

저는 지금까지 개발을 할 때,

항상 Index번호가 아닌

column명으로

데이터를 가지고 왔었습니다.

 

그렇기 때문에 앞으로도

이렇게 계속 쓸 거 같습니다.

 

 

그러니 이렇게 해서

사용을 해 주시면 좋을 거 같습니다.

 

 

이상으로 파이썬에서 DB의 Index번호가 아닌

컬럼명으로 데이터를 가져오는 방법이였습니다~

 

 

728x90
반응형
LIST