인문지식 처리와 프로그래밍2020 4.23

soook
이동: 둘러보기, 검색

파이썬 프로그램을 이용한 데이터베이스 접근

실습1-0 파이썬파일준비

#!/usr/bin/python

import pyodbc 

# required interface data values are
server = 'tcp:digerati.aks.ac.kr' 
database = 's_soook' 
username = 'Guest' 
password = 'Guest' 

def main():

	cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
	cursor = cnxn.cursor()

	cursor.execute("select id, label from soookArtData$ order by id") #SQL 문 실행

	row = cursor.fetchone() 		# Select 문의 결과 세트 중에서 첫번째 데이터를 가져온다
	
	while row: 						#가져온 데이터가 있을 때까지 반복 수행
		print( '{0}\t{1}'.format(row[0], row[1]) ) 	#가져온 데이터를 출력한다
		row = cursor.fetchone() # 그 다음 데이터를 가져온다
		
main()

실습1-1 SQL명령문으로 데이터불러오기

use s_soook
select * from sys.tables order by name
select * from soookArtData$
select id, label from soookArtData$ order by id

실습1-2 명령프롬프트로 SQL데이터불러오기

  • 경로주의!!! 항상 파이썬파일과 파이썬으로 접근할 대상파일이 어디에 있는지 경로확인할것!!!



C:\Users\soook>cd desktop

C:\Users\soook\Desktop>cd 0416HW

C:\Users\soook\Desktop\0416HW>cd odbc

C:\Users\soook\Desktop\0416HW\odbc>python odbc01s_soook.py
None    None
None    None
PS0100100100100380400000        구현겸의 아내 정씨 묘지
PS0100100100100380400000        구현겸의 아내 정씨 묘지
PS0100100100100423400000        황보양 아내 김씨 묘지석
PS0100100100100423400000        황보양 아내 김씨 묘지석
PS0100100100100675400000        태자사 낭공대사 비석
PS0100100100100675400000        태자사 낭공대사 비석
PS0100100100100788400000        채인범 묘지명
PS0100100100100788400000        채인범 묘지명
PS0100100100100788500000        심익선 묘지와 아내 홍씨 묘지
PS0100100100100788500000        심익선 묘지와 아내 홍씨 묘지
PS0100100100100798000000        정언심 묘지명
PS0100100100100798000000        정언심 묘지명
PS0100100100100821000000        이서 묘지와 아내 송씨, 조씨 부부 묘지
PS0100100100100821000000        이서 묘지와 아내 송씨, 조씨 부부 묘지
PS0100100100100979400000        진서량 묘지명
PS0100100100100979400000        진서량 묘지명
PS0100100100100979600000        왕경원 묘지
PS0100100100100979600000        왕경원 묘지
PS0100100100100979700000        임사헌 묘지
PS0100100100100979700000        임사헌 묘지
PS0100100100100987500000        윤서적 묘지명
PS0100100100100987500000        윤서적 묘지명
PS0100100100100996800000        김상택 묘지
PS0100100100100996800000        김상택 묘지
PS0100100100101000500000        김유신 아내 이씨 묘지명
PS0100100100101000500000        김유신 아내 이씨 묘지명
PS0100100100101006400000        윤서적 묘지와 아내 박씨 묘지
PS0100100100101006400000        윤서적 묘지와 아내 박씨 묘지
PS0100100100101010500000        구인기 묘지
PS0100100100101010500000        구인기 묘지
PS0100100100101010600000        구선행 묘지
PS0100100100101010600000        구선행 묘지
PS0100100100101010700000        구성필 묘지명
PS0100100100101010700000        구성필 묘지명
PS0100100100101011000000        정원용 묘지명
PS0100100100101011000000        정원용 묘지명
PS0100100100101031200000        양자명의 어머니 부인 구씨 묘지
PS0100100100101031200000        양자명의 어머니 부인 구씨 묘지
PS0100100100101031600000        남을충 묘지
PS0100100100101031600000        남을충 묘지
PS0100100100101044000000        안극인 묘지
PS0100100100101044000000        안극인 묘지
PS0100100100101048800000        광제승통 총서 묘지명
PS0100100100101048800000        광제승통 총서 묘지명
PS0100100100101062800000        김훤 묘지명
PS0100100100101062800000        김훤 묘지명
PS0100100100101080000000        최문도 묘지명
PS0100100100101080000000        최문도 묘지명
PS0100100100101128700000        김상연 묘지
PS0100100100101128700000        김상연 묘지
PS0100100100101141300000        정석귀 묘지
PS0100100100101141300000        정석귀 묘지
PS0100100100101272400000        오원경 묘지명
PS0100100100101272400000        오원경 묘지명
PS0100100100101292100000        낙랑군부인 김씨 묘지명
PS0100100100101292100000        낙랑군부인 김씨 묘지명
PS0100100100101299500000        김의원 묘지명
PS0100100100101299500000        김의원 묘지명
PS0100100100101299600000        이자원의 딸 이씨 묘지명
PS0100100100101299600000        이자원의 딸 이씨 묘지명
PS0100100100101386800000        장문위 묘지명
PS0100100100101386800000        장문위 묘지명
PS0100100100101393200000        윤상은 묘지
PS0100100100101393200000        윤상은 묘지
PS0100100100101416100000        최서 아내 박씨 묘지명
PS0100100100101416100000        최서 아내 박씨 묘지명
PS0100100100101469100000        윤증 묘지
PS0100100100101469100000        윤증 묘지
PS0100100100300225200000        낭자 이씨 묘지
PS0100100100300225200000        낭자 이씨 묘지
PS0100100100300225300000        김극형 묘지
PS0100100100300225300000        김극형 묘지
PS0100100100500421300000        임관의 묘지와 아내 신씨 묘지
PS0100100100500421300000        임관의 묘지와 아내 신씨 묘지
PS0100100100500645200000        허제 묘지
PS0100100100500645200000        허제 묘지
PS0100100100900014100000        박증구 묘지와 아내 이씨 묘지
PS0100100100900014100000        박증구 묘지와 아내 이씨 묘지
PS0100100100900050500000        박경현 묘지
PS0100100100900050500000        박경현 묘지
PS0100100100900058900000        김경한 묘지
PS0100100100900058900000        김경한 묘지
PS0100100100900068800000        민상 묘지
PS0100100100900068800000        민상 묘지
PS0100100100900068900000        안경위 묘지
PS0100100100900068900000        안경위 묘지
PS0100100100900069000000        홍발 묘지
PS0100100100900069000000        홍발 묘지
PS0100100100900069100000        홍석후 아내 유씨 묘지
PS0100100100900069100000        홍석후 아내 유씨 묘지
PS0100100100900069400000        이유정의 아내 이씨 묘지
PS0100100100900069400000        이유정의 아내 이씨 묘지
PS0100100100900069500000        윤원 묘지
PS0100100100900069500000        윤원 묘지
PS0100100100900069600000        김한구 묘지
PS0100100100900069600000        김한구 묘지
PS0100100100900070000000        박언감 묘지와 아내 박씨 묘지
PS0100100100900070000000        박언감 묘지와 아내 박씨 묘지
PS0100100100900070100000        정원용의 아내 김씨 묘지명
PS0100100100900070100000        정원용의 아내 김씨 묘지명
PS0100100101100048800000        윤유 묘지명
PS0100100101100048800000        윤유 묘지명
PS0100100101100074200000        청연군주 묘지
PS0100100101100074200000        청연군주 묘지
PS0100100101100077200000        청연군주 남편 김기성 묘지명
PS0100100101100077200000        청연군주 남편 김기성 묘지명
PS0100100101100077500000        김재창 묘지
PS0100100101100077500000        김재창 묘지
PS0100100101100088200000        윤지순 묘지
PS0100100101100088200000        윤지순 묘지
PS0100100101100088400000        신영명 아내 선씨 묘지
PS0100100101100088400000        신영명 아내 선씨 묘지
PS0100100101100100000000        인흥군의 셋째 딸 묘지
PS0100100101100100000000        인흥군의 셋째 딸 묘지
PS0100100101100100800000        김원행 묘지
PS0100100101100100800000        김원행 묘지
PS0100100101100152800000        정지화 묘지명
PS0100100101100152800000        정지화 묘지명
PS0100100101100153800000        김성구 묘지
PS0100100101100153800000        김성구 묘지
PS0100100101100216000000        신승 묘지명
PS0100100101100216000000        신승 묘지명
PS0100100101100216700000        장일 묘지명
PS0100100101100216700000        장일 묘지명
PS0100100101100219500000        전만재 묘지
PS0100100101100219500000        전만재 묘지
PS0100100101100229000000        윤득홍 아내 김씨 묘지
PS0100100101100229000000        윤득홍 아내 김씨 묘지
PS0100100101100229700000        이습 묘지
PS0100100101100229700000        이습 묘지
PS0100100101100233700000        김일진 묘지
PS0100100101100233700000        김일진 묘지
PS0100100101100233800000        김지묵 묘지
PS0100100101100233800000        김지묵 묘지
PS0100100101100264300000        정대년 묘지명
PS0100100101100264300000        정대년 묘지명
PS0100100101100264400000        홍수관 묘지명
PS0100100101100264400000        홍수관 묘지명
PS0100100101100264700000        이규환의 아내 신씨 묘지
PS0100100101100264700000        이규환의 아내 신씨 묘지
PS0100100101100265800000        김광수 자명
PS0100100101100265800000        김광수 자명
PS0100100101100269300000        이후원 묘지명
PS0100100101100269300000        이후원 묘지명
PS0100100101100271900000        권성기 묘지
PS0100100101100271900000        권성기 묘지
PS0100100101100277400000        양택춘 묘지명
PS0100100101100277400000        양택춘 묘지명
PS0100100101100315200000        김응벽 묘지
PS0100100101100315200000        김응벽 묘지
PS0100100101100346400000        이정악 아내 김씨 묘지
PS0100100101100346400000        이정악 아내 김씨 묘지
PS0100100101100379300000        사도세자 묘지
PS0100100101100379300000        사도세자 묘지
PS0100100101100432600000        제안대군 묘지
PS0100100101100432600000        제안대군 묘지
PS0100100101100433300000        평원대군 묘지명
PS0100100101100433300000        평원대군 묘지명
PS0100100101100449700000        정구응 묘지
PS0100100101100449700000        정구응 묘지
PS0100100101100451800000        정건일 묘지명
PS0100100101100451800000        정건일 묘지명
PS0100100101100580700000        정근 아내 김씨 묘지명
PS0100100101100580700000        정근 아내 김씨 묘지명
PS0100100101100580900000        김지영 묘지명
PS0100100101100580900000        김지영 묘지명
PS0100100101100582100000        박소 묘지명
PS0100100101100582100000        박소 묘지명
PS0100100101100582200000        설신 묘지명
PS0100100101100582200000        설신 묘지명
PS0100100101100582900000        이문탁 묘지명
PS0100100101100582900000        이문탁 묘지명
PS0100100101100583200000        백임지 묘지명
PS0100100101100583200000        백임지 묘지명
PS0100100101100583700000        왕효묘지명
PS0100100101100583700000        왕효묘지명
PS0100100101100584000000        이탄지 묘지명
PS0100100101100584000000        이탄지 묘지명
PS0100100101100584300000        염경애 묘지명
PS0100100101100584300000        염경애 묘지명
PS0100100101100584400000        최함 묘지석
PS0100100101100584400000        최함 묘지석
PS0100100101100584700000        최유청 아내 정씨 묘지명
PS0100100101100584700000        최유청 아내 정씨 묘지명
PS0100100101100584800000        김순 묘지명
PS0100100101100584800000        김순 묘지명
PS0100100101100585400000        복령공주 묘지명
PS0100100101100585400000        복령공주 묘지명
PS0100100101100585900000        최재 묘지명
PS0100100101100585900000        최재 묘지명
PS0100100101100586200000        이승장 묘지명
PS0100100101100586200000        이승장 묘지명
PS0100100101100586600000        원선지 묘지명
PS0100100101100586600000        원선지 묘지명
PS0100100101100586700000        허공묘지명
PS0100100101100586700000        허공묘지명
PS0100100101100586900000        홍규 아내 김씨 묘지명
PS0100100101100586900000        홍규 아내 김씨 묘지명
PS0100100101100587000000        윤언이 묘지명
PS0100100101100587000000        윤언이 묘지명
PS0100100101100587400000        수령옹주 묘지명
PS0100100101100587400000        수령옹주 묘지명
PS0100100101100587600000        김유규 묘지명
PS0100100101100587600000        김유규 묘지명
PS0100100101100589800000        순회세자 태지
PS0100100101100589800000        순회세자 태지
PS0100100101100627100000        영빈이씨 묘지
PS0100100101100627100000        영빈이씨 묘지
PS0100100101100627200000        안겸제 묘지
PS0100100101100627200000        안겸제 묘지
PS0100100101100627300000        조영하 묘지명
PS0100100101100627300000        조영하 묘지명
PS0100100101100629200000        안양군 아내 구씨 묘지명
PS0100100101100629200000        안양군 아내 구씨 묘지명
PS0100100101100635800000        정휘옹주 묘지명과 남편 유정량 묘지명
PS0100100101100635800000        정휘옹주 묘지명과 남편 유정량 묘지명
PS0100100101100694400000        윤명은 묘지명
PS0100100101100694400000        윤명은 묘지명
PS0100100101100723100000        전흥대 묘지
PS0100100101100723100000        전흥대 묘지
PS0100100101100755400000        아이 용득 묘지
PS0100100101100755400000        아이 용득 묘지
PS0100100101100758300000        조병빈 묘지
PS0100100101100758300000        조병빈 묘지
PS0100100101100787400000        강빈 묘지
PS0100100101100787400000        강빈 묘지
PS0100100101101014900000        윤지임 묘지명
PS0100100101101014900000        윤지임 묘지명
PS0100100101101032600000        황진 묘지명
PS0100100101101032600000        황진 묘지명
PS0100100101101239800000        백자 태항아리와 태지석
PS0100100101101239800000        백자 태항아리와 태지석
PS0100100101101360500000        해안군 묘지명
PS0100100101101360500000        해안군 묘지명
PS0100100101101360600000        해안군 아내 신씨 묘지명
PS0100100101101360600000        해안군 아내 신씨 묘지명
PS0100100101101514600000        창대 묘지와 아내 김씨, 박씨 부부 묘지
PS0100100101101514600000        창대 묘지와 아내 김씨, 박씨 부부 묘지
PS0100100101101514700000        이계맹 묘지명
PS0100100101101514700000        이계맹 묘지명
PS0100100101101576900000        정철 묘지명
PS0100100101101576900000        정철 묘지명
PS0100100101101609700000        영창대군 묘지명
PS0100100101101609700000        영창대군 묘지명
PS0100100101101823600000        양평 보리사지 대경대사탑비
PS0100100101101823600000        양평 보리사지 대경대사탑비
PS0100100101101824100000        북묘비
PS0100100101101824100000        북묘비
PS0100100101101824200000        북한산 신라 진흥왕 순수비
PS0100100101101824200000        북한산 신라 진흥왕 순수비
PS0100100101600314400000        정관시 묘지
PS0100100101600314400000        정관시 묘지
PS0100100101600314900000        운천군 아내 학성군부인 권씨 묘지
PS0100100101600314900000        운천군 아내 학성군부인 권씨 묘지
PS0100100101600672800000        장운행 묘지
PS0100100101600672800000        장운행 묘지
PS0100100101700592500000        윤사신 아내 양씨 묘지
PS0100100101700592500000        윤사신 아내 양씨 묘지
PS0100100101700695200000        김기항 아내 서씨 묘지
PS0100100101700695200000        김기항 아내 서씨 묘지
PS0100100101700812200000        이학수 태지석
PS0100100101700812200000        이학수 태지석
PS0100100102100700200000        숙인 남양홍씨 묘지명
PS0100100102100700200000        숙인 남양홍씨 묘지명
PS0100100102100700300000        심익선 묘지명
PS0100100102100700300000        심익선 묘지명
PS0100100200100028200000        임신서기석
PS0100100200100028200000        임신서기석
PS0100100300100040200000        당 유인원 기공비
PS0100100300100040200000        당 유인원 기공비
PS0100100300100162800000        보광사대보광선사비
PS0100100300100162800000        보광사대보광선사비
PS0100100400100062000000        무령왕릉 지석
PS0100100400100062000000        무령왕릉 지석
PS0100100400100062100000        무령왕릉 지석
PS0100100400100062100000        무령왕릉 지석

C:\Users\soook\Desktop\0416HW\odbc>




질문

* TCP(Transmission Control Protocol)

TCP는 IP 프로토콜 위에서 연결형 서비스를 지원하는 전송계층 프로토콜로, 인터넷 환경에서 기본으로 사용한다. TCP에서 제공하는 주요 기능은 다음과 같다.

    • 연결형 서비스를 제공한다.
    • 전이중(Full Duplex) 방식의 양방향 가상 회선을 제공한다.
    • 신뢰성 있는 데이터 전송을 보장한다.

[그림 9-7]은 인터넷 환경에서 사용하는 TCP/IP의 계층적 구조를 보여준다. 인터넷에서 네트워크 계층의 기능을 제공하는 프로토콜은 IP며, IP 프로토콜 위에서 실행되는 전송 계층 프로토콜은 서비스의 유형에 따라 두 종류로 구분한다. TCP는 연결형 서비스를 지원하는 프로토콜이고, UDP는 비연결형 서비스를 지원하는 프로토콜이다. 전송 계층 프로토콜은 운영체제 내부 기능으로 구현된다. 따라서 이 서비스를 사용하려면 상위 계층에서 시스템 콜이라는 프로그램 호출 방식을 이용해야 한다.

전송 계층 프로토콜인 TCP와 UDP 위에는 세션 계층, 표현 계층, 응용 계층의 기능을 지원하는 다양한 응용 프로그램이 존재할 수 있다. 응용 프로그램이 해당 응용 환경에 적합한 기능을 지원하기 위해 연결형 서비스가 필요한지, 비연결형 서비스가 필요한지를 판단해 TCP와 UDP를 선택한다. TCP와 UDP 선택에서는 단순히 신뢰성이나 연결 유무의 차이뿐만 아니라, 이러한 차이가 응용 프로그램의 구축에 어떤 영향을 끼치는지를 이해해야 한다.

응용 프로그램의 종류는 아주 다양하다. 파일 전송 기능, 메일 송수신 기능 등은 일반 사용자가 가장 많이 이용하는 인터넷 서비스다. 호스트의 이름과 주소를 변환하는 네임 서버 기능은 사용자가 의식하지는 못하지만 가장 많이 이용하는 인터넷 서비스다. 이에 대한 자세한 내용은 뒤에서 다룬다. 마지막의 NFS(Network File System)는 원격 분산 파일 시스템 기능을 지원하는 것으로, 호스트 사이의 파일 공유와 유사한 기능을 제공한다.


TCP에서는 데이터를 세그먼트(Segment)라는 블록 단위로 분할해 전송한다. 전송되는 블록의 크기는 네트워크 부하 정도, 윈도우 크기 등의 영향을 받으며, 가변 크기를 지원한다. TCP에서는 세그먼트를 하나의 단위로 간주하여 순서 번호를 관리하지 않는다. 대신 세그먼트에 실려 전송되는 데이터의 바이트 개수를 순서 번호에 반영한다.

[네이버 지식백과] TCP (데이터 통신과 컴퓨터 네트워크, 2013. 9. 10., 박기현)

* cnxn

cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)

*cursor

cursor란 단어는 라틴어의 cursor로부터 유래했으며, cursor : L. currere(to run) + sor

PIE(Proto Indo-European language)에서 to run의 뜻이 있는 kers-와 관련있는 currere란 동사로부터 유래한 명사로 runner의 뜻이 있다.

ex) currency, current - L. currens (curr + ens) course - L. cursus (cur + sus) curriculum - L. curr + i + culum)

Parvicursor, cursor, currency, course, curriculum...