我可以使用以下内容进行mySQL数据插入,
from twisted.enterprise.adbapi import ConnectionPool
.
.
self.factory.pool.runOperation ('insert into table ....')
但是,不知何故无法弄清楚如何从对adSQL的adbapi调用进行简单的选择,如下所示,
self.factory.pool.runOperation('SELECT id FROM table WHERE name = (%s)',customer)
如何从此partilcar调用中检索id值?我用普通的python工作得很好,但不知何故真的对扭曲的框架进行了模糊处理。
感谢。
答案 0 :(得分:7)
runOperation
不适用于 SELECT 语句。它适用于不产生行的语句,例如 INSERT 和 DELETE 。
runQuery
支持生成行的语句。例如:
pool = ...
d = pool.runQuery("SELECT id FROM table WHERE name = (%s)", (customer,))
def gotRows(rows):
print 'The user id is', rows
def queryError(reason):
print 'Problem with the query:', reason
d.addCallbacks(gotRows, queryError)
在此示例中,d
是Deferred
的实例。如果您之前没有遇到过Deferreds,那么您肯定想要了解它们:http://twistedmatrix.com/documents/current/core/howto/defer.html