我想從Oracle獲取一些數據,使用Twisted和runQuery並繼續獲取延遲而不是實際數據。 這怎麼解決? 一些代碼(我排除一些不必要的部分,但這個想法應該清楚):從dbpool.runQuery獲取延遲,而不是使用Twisted和Oracle的數據
from twisted.enterprise import adbapi
from twisted.internet import defer
import service_config
ORACLE_DSN = service_config.oracle_dsn
ORACLE_USER = service_config.oracle_user
ORACLE_PASSWORD = service_config.oracle_password
dbpool = adbapi.ConnectionPool('cx_Oracle',
user=ORACLE_USER,
password=ORACLE_PASSWORD,
dsn=ORACLE_DSN, port='49161')
@defer.inlineCallbacks
def ask_db():
data = yield dbpool.runQuery("SELECT * FROM customer")
a = ask_db()
print(a)
我得到了在其他模塊反應堆的運行,如果是重要的。 預先感謝您。
UPDATE: 隨着@幫助notorious.no得到了工作代碼,返回數據,而不是使用Python 3.5遞延:
@defer.inlineCallbacks
def ask_db(request):
data = yield dbpool.runQuery(request)
return defer.returnValue(data)
你,如果你改變你的打印(一)內部ask_db打印(數據)並沒有從ask_db函數返回任何東西..,什麼接下來會發生? – James
您的意思是def ask_db(): data = yield dbpool.runQuery(「SELECT * FROM customer」)print(data)?如果是,沒有任何變化。 –