BLOG ARTICLE 파이썬 | 2 ARTICLE FOUND

  1. 2009/12/18 BeautifulSoup을 이용한 xml -> sqlite3 데이터로 변환 (2)
  2. 2008/02/20 OS X의 파이썬

파이썬에서 사용할 수 있는 BeautifulSoup을 이용해 xml 데이터를 sqlite3 DB에 넣는 툴을 만들는 간단한 예입니다.

1. BeautifulSoup 다운로드 및 설치
필요한 파일은 BeautifulSoup 사이트에서 다운로드 받으실 수있습니다. 파이썬 버젼이 2.*이면 3.0* 버젼을 3.*이면 3.1* 버젼중 최신버젼을 다운로드 받습니다. 다운로드가 완료되면 압축을 풀고 터미널에서 아래와 같이 setup.py를 실행합니다.

>python ./setup.py install

2. BeautifulSoup 사용예
1) 셈플 xml 파일 (test.xml)
테스트를 위해 간단히 작성해본 XML 입니다.
<?xml version='1.0' encoding='UTF-8'?>
<alcohol>
    <cate1 tt="술">
        <cate2 tt="소주">  
            <item>참이슬</item>
            <item>처음처럼</item>
            <item>잎새주</item>
        </cate2>   
        <cate2 tt='맥주'>  
            <item>카스</item>
            <item>라거</item>
            <item>하이트</item>
        </cate2>   
    </cate1>    
    <cate1 tt="안주">  
        <cate2 tt="고가">
            <item>회</item>
            <item>등심</item>
            <item>양곱창</item>
        </cate2>
        <cate2 tt="저가">
            <item>참치캔</item>
            <item>날계란</item>
            <item>새우깡</item>
        </cate2>
    </cate1>   
</alcohol>

2) 파이썬 소스파일 (con_data.py)
  1. #!/usr/bin/python
  2. #  -*- coding: utf-8 -*-
  3.  
  4. import sys
  5. import sqlite3
  6. from BeautifulSoup import BeautifulStoneSoup
  7.  
  8. argCount = len(sys.argv)
  9. if argCount is not 3:
  10.     print 'Usage:con_data.py [xml file] [db file]'
  11.     sys.exit(0)
  12.  
  13. xml_file = sys.argv[1]
  14. db_file = sys.argv[2]
  15.  
  16. #XML open
  17. src = open(xml_file)
  18. soup = BeautifulStoneSoup(src)
  19.  
  20. #DB & Table create
  21. db = sqlite3.connect(db_file)
  22. cursor = db.cursor()
  23.  
  24. cursor.execute("CREATE TABLE item(cate1, cate2, name)");
  25.  
  26. #Insert data
  27. for cate1 in soup.alcohol('cate1'):
  28.     query1 = 'INSERT INTO item VALUES("' + cate1['tt'] + '", "'
  29.     print 'CATE1: ' + cate1['tt']
  30.    
  31.     for cate2 in cate1('cate2'):
  32.         query2 = query1 + cate2['tt'] + '", "'
  33.         print   '\tcate2: ' + cate2['tt']
  34.      
  35.         for item in cate2('item'):
  36.             query3 = query2 + item.string + '")'
  37.             print '\t\t' + item.string
  38.  
  39.             cursor.execute(query3)
  40.     print "---------------------"
  41.  
  42. #Close
  43. cursor.close()
  44. db.commit()
  45. db.close()

3) 테스트
아래와 같이 실행하면 test.db가 생성되어 있음을 확인하실 수 있습니다.


해당 사이트에서 문서 페이지를 읽어 보시면 보다 세부적인 기능과 상세한 사용법을 확인하실 수  있습니다.  사용한 con_data.py외 test.xml은 압축하여 첨부하였습니다. 테스트 시에는 터미널에서 chmod +x ./con_data.py로 실행권한을 설정하셔야 합니다.


저작자 표시 비영리 변경 금지

개발 툴 2008/02/20 16:10
사용자 삽입 이미지
리눅스 배포본과 마찬가지로 맥 OS X에는 기본적으로 파이썬이 설치되어 있습니다. 터미널에서 > python[enter]을 입력하면 현재 설치된 파이썬의 버젼을 확인할 수 있습니다. OS X 10.4 (타이거)의 경우에는 2.3대 버젼이 설치되어 있습니다.

현재 파이썬의 경우는 2.5.1 버젼이 나와 있으며 파이썬 사이트에서 다운로드 받을 수 있습니다. GUI 환경에서 클릭만으로 설치할 수 있는 OS X 버젼이 따로 있으니 버젼업을 원하시는 분들은 다운로드 받으셔서 설치하시면 됩니다.

사용자 삽입 이미지
설치는 MacPython.mpkg를 더블클릭하면 간단히 설치됩니다. 설치가 완료되면 응용 프로그램 폴더의 MacPython2.5 폴더에 파이썬의 GUI 툴들이 설치됩니다.

좌측은 파이썬 통합개발환경인 IDLE를 실행한 모습입니다.



기존 버젼은  /System/Library/Frameworks/에 위치하지만 맥파이썬으로 설치하면 /Library/Frameworks/에 설치됩니다. 파이썬 실행 파일들은  /usr/bin/에 위치하며 2.3 버젼의 실행파일에 심볼릭 링크되어 있습니다. 아래와 같이 링크를 변경하면 쉘에서도 2.5 버젼을 사용하실 수 있습니다.

> cd /usr/bin/

> sudo ln -s -f /Library/Frameworks/Python.framework/Versions/2.5/bin/python ./python

> sudo ln -s -f /Library/Frameworks/Python.framework/Versions/2.5/bin/pydoc ./

> sudo ln -s -f /Library/Frameworks/Python.framework/Versions/2.5/bin/pythonw ./

이외에 Objective-C와 혼용 해서 사용할 수있게 해주는 PyObjC가 있습니다. OS X 버젼으로 다운로드 받고 설치하면 Xcode에 PyObjC 프로젝트에 관련된 템플릿을 등록시켜 줍니다. OS X 10.5 (레오퍼드)에는 기본으로 설치되어 있다고 하는데 확인하지는 못했습니다.

저는 파이썬을 능숙하게 사용하지 못합니다. 하지만 간단한 용도로 log등의 대용량 텍스트 파일 처리나 DB에서 데이터를 가져와서 재가공해서 넣는 작업, 복잡한 수치 계산, 쉘스크립트 대용으로 매우 유용하게 사용하고 있습니다.

파이썬은 다른 언어와 비교해 시작하기가 매우 쉽고, 용도에 따라 다양한 모듈을 가지고 있으며 강력합니다. OS X, 리눅스는 물론이고 윈도우즈에서도 편리하게 사용할 수 있습니다. IT관련 업무를 하는 분들이 아니더라도 컴퓨터를 이용해 효율적인 작업을 하고 싶은 분들은 잠깐 시간을 투자하여 배워 보시는 것도 괜찮을 것 같습니다.

'개발 툴' 카테고리의 다른 글

프로젝트 관리 도구 OpenProj  (2) 2008/03/21
적당히 참견하는 Xcode  (4) 2008/02/25
OS X의 파이썬  (0) 2008/02/20
Java 교육용 프로그램 Greenfoot  (0) 2007/12/23
Xcode에서 Flex - Hello World 작성  (0) 2007/12/12
Adobe Flex Builder를 딱 한번 써보고...  (8) 2007/12/03