인문지식 처리와 프로그래밍2020 4.23
목차
파이썬 프로그램을 이용한 데이터베이스 접근
실습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...