如何从twisted.enterprise.adbapi,而不是“ Deferred”对象中获取数据

时间:2019-04-05 18:38:15

标签: python sql-server database twisted pymssql

当将twisted.enterprise.adbapi与sql_server一起使用时,我总是会得到“ Deferred”对象,但是我需要列表或tulpe中的可用数据。

import pymssql
from twisted.internet import reactor   
from twisted.enterprise import adbapi
db_settings = {
 "host" : "127.0.0.1",
 "port" : "1433",
 "user" : "sa",
 "password" : "sa",
 "database" : "dataDB",
 "cp_min" : "3",
 "cp_max" : 10,
 "cp_noisy" : "True",
 "charset" : "utf8"
}

dbpool = adbapi.ConnectionPool("pymssql", **db_settings)

def getData():
    return dbpool.runQuery("SELECT * FORM dataDB.Base")

reactor.callLater(4, reactor.stop)
print getData()
reactor.run()

执行以上代码,只需在命令中获取“ Deferred at 0x4ca2948”即可。接下来我该怎么办?

1 个答案:

答案 0 :(得分:0)

使用以下代码,可以从“延迟”中获取数据

def getAge():
 return dbpool.runQuery("SELECT * FROM Base")

def getValue(L):
    print L[0][0]  # type(L[0]) is Tuple

getAge().addCallback(getValue)
reactor.run()

但是,我仍然不知道函数getValue中“ L”的含义。不确定“ L”是getAge()的结果。