2012년 9월 3일 월요일

pymssql, py2exe 활용 DB 긁어오기

이번 포스팅을 위해서 블로그에 Syntax highlight를 적용하였다.
앞으로 코드를 올릴 때,
## 이 안에 코드텍스트를 그대로 붙여넣기만 하면,
Javascript가 적용되어, 가독성 좋은 코드가 펼쳐지게 된다.(참고 : http://isakaone.blogspot.kr/2011/11/bloggercom-syntax-highlight.html )

pymssql, py2exe 모듈은 아래의 링크에서 exe로 만들어진 배포본을
다운받아 윈도우에서 간편하게 설치가능하다.
(http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql)

※ pymssql 구글코드(http://code.google.com/p/pymssql/)
※ py2exe 사용법 포스트(http://soooprmx.com/wp/archives/976)



import pymssql, time

with open('SQLfetcher.ini') as f:
    cfg = f.readlines()
    Provider = cfg[0].split('=')[1].strip()
    DataSource = cfg[1].split('=')[1].strip()
    InitialCatalog = cfg[2].split('=')[1].strip()
    UserId = cfg[3].split('=')[1].strip()
    Password = cfg[4].split('=')[1].strip()
    SQLscript = cfg[5].split(':')[1].strip()
    DelaySeconds = cfg[6].split('=')[1].strip()
    Sec = int(DelaySeconds)

print "Provider = " +Provider
print "DataSource = " +DataSource
print "InitialCatalog = " +InitialCatalog
print "UserId = " +UserId
print "Password = " +Password
print "SQLscript = " +SQLscript

loop = 1

while True:
    print '\nRunning count : ' + str(loop)

    con = pymssql.connect(host=DataSource,
                          user=UserId,
                          password=Password,
                          database=InitialCatalog)
    cur = con.cursor()
    cur.execute(SQLscript)

    filename = time.strftime("%Y%m%d-%H%M%S")
    dataset = cur.fetchall()

    output = open(filename + '.txt','w')
    for data in dataset:
        i = data[0]
        output.write(i + '\n')

    con.close()
    
    print 'And Waiting ' + DelaySeconds + ' seconds...'
    time.sleep(Sec)
    loop += 1


간단하게 mssql 서버에서 필요한 내용을 긁어오는 프로그램으로, 서버정보와 sql쿼리명령문은 ini파일에서 읽어오도록 하였고, 별도로 에러처리는 하지 않았다

Ini파일에서 SQLscript 를 분리해 낼 때, SQL문에 이퀄(=)이 들어갈 수 있음을 고려하지 않은 실수가 있었다. (=)->(:)으로 수정

파이썬코드를 exe로 변환하기 위해 같은 폴더에 setup.py를 만들고 아래의 코드를 적어넣었는데, 특이한 점은 추가되는 모듈에 pymssql만 넣으면 안되고, "_mssql", "decimal", "uuid"를 넣어주어야 한다는 것


from distutils.core import setup
import py2exe, sys
 
sys.argv.append("py2exe")
 
setup(console=["SQLfetcher.py"],
      options={
          "py2exe":{
              "packages" : ["pymssql", "_mssql", "decimal", "uuid",], 
              "bundle_files":1,
              "optimize":2,
              "dll_excludes": ["w9xpopen.exe"],
              }
          },
      zipfile = None
      )

이 포스트를 쓰기 전까지의 '나'는 다른 프로그래머들의 지적생산물을 소비하기만 해왔는데, 지금 이 포스트를 시작으로 내가 뭔가를 생산해내어 공유하는 것 같아 보람이 느껴지려고 한다. 물론 많이 미숙하긴 하지만...

댓글 없음:

댓글 쓰기