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()
생각보다 쉽지 않다. 특히 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()
댓글