2010년 4월 2일 금요일

python twisted UPDATE query 처리 예제.

python twisted 를 시작했다.
생각보다 쉽지 않다. 특히 deferred 가 어렵다.
문서화가 잘되 있지 않아 (있긴하지만 초보에게 친절하지 않다) 이해가 안된다.
3일을 끙끙대며 예제를 따라 갔는데 DB update 방법을 몰라서 고생했다.
twisted IRC 에 접속해 물어 봐서 간신히 방법을 알아 냈다.

바로 runInteraction 을이용해야 한다는거다.

잊어버릴것 같아 예제를 기록해 둔다.

 ============================================

from twisted.internet import epollreactor
epollreactor.install()

from twisted.internet import reactor,threads
from twisted.python import log
from twisted.enterprise import adbapi
import time


dbpool = adbapi.ConnectionPool('cx_Oracle',dsn='mydsn',user='irts',password='irts')
def updateProc(txn):
    result = (True, )
    try:
        txn.execute('UPDATE AVISTATE set ONLINEFLAG=0 where (sysdate - updatedate)*24*60*60 > 120')
        result = (True,)
    except Exception,e:
        result = (False,e)
    return result

def getAVIID():
    return dbpool.runInteraction(updateProc)
def printResult(x):
    if x[0]:
        print 'Updatge success'
    else:
        print x[1]
    reactor.stop()


getAVIID().addCallback(printResult)


reactor.run()

댓글 없음: