Получение данных из простого SELECT с использованием twisted.enterprise.adbapi - PullRequest
2 голосов
/ 20 декабря 2011

Я могу выполнить вставку данных MySQL, используя следующее,

from twisted.enterprise.adbapi import ConnectionPool
.
.
self.factory.pool.runOperation ('insert into table ....')

Но, так или иначе, не могу понять, как сделать простой выбор из вызова adbapi в MySQL, например,

self.factory.pool.runOperation('SELECT id FROM table WHERE name = (%s)',customer)

Как мне получить значение id из этого вызова partilcar?Я работал нормально с простым Python, но почему-то действительно запутался с витой рамкой.

Спасибо.

1 Ответ

7 голосов
/ 20 декабря 2011

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.Если вы раньше не сталкивались с Отложенными, вы определенно хотите прочитать о них: http://twistedmatrix.com/documents/current/core/howto/defer.html

...