2

我尝试使用下面的代码:

from twisted.enterprise import adbapi   

    dbpool = adbapi.ConnectionPool(
                        "MySQLdb",
                        db='test_db',
                        port='3306',
                        user='tester',
                        passwd='some_pass',
                        host='localhost',
                        cp_reconnect=True
                    )

    dbpool.runQuery("INSERT INTO `htp_test` VALUES(NULL, 25, 'test')")

但是数据没有插入mysql,也没有显示错误。数据连接良好。

4

1 回答 1

4

你需要启动反应堆。中的“a”adbapi代表“异步”,就像扭曲中的其他所有内容一样。当你调用时ConnectionPool.runQuery(),你已经要求twisted在后台做一些工作,当它完成后,在延迟返回的中给你那个动作的结果runQuery

但是为了让twisted“做”任何事情,你有义务开始它的事件循环。在最简单的情况下,您可以:

from twisted.internet import reactor
from twisted.enterprise import adbapi 

def got_result(value):
    # do something, value won't be interesting on insert statements, though
    print "Horray"    
    # since this is all we want to do, stop the reactor
    reactor.stop()

d = dbpool.runQuery("INSERT INTO `htp_test` VALUES(NULL, 25, 'test')")
d.addCallback(got_result)

reactor.run()
于 2012-12-27T20:44:50.297 回答