Вызов хранимой процедуры MySQL с помощью Twisted adbapi - PullRequest
1 голос
/ 03 февраля 2012

Я пытаюсь вызвать хранимую процедуру MySQL из Twisted adbapi, используя интерфейс MySQLdb, но не могу заставить ее работать.Я увидел, что есть особый способ вызова хранимой процедуры в MySQLdb (callproc), поэтому мне было интересно, существует ли специальный способ вызова ее из adbapi.

Моя хранимая процедура занимает два поля A_PROCEDURE(field1 VARCHAR(20), field2 VARCHAR(25))и я пытаюсь назвать это в своей программе наиболее очевидным для меня способом: dbpool.runOperation("CALL A_PROCEDURE(%s,%s)", arg1, arg2).Эта попытка называется ошибкой.Процедура работает нормально, если я просто протестирую ее из моего терминального соединения с базой данных.

1 Ответ

3 голосов
/ 03 февраля 2012

Вы можете использовать runInteraction для выполнения произвольной работы с базой данных или адаптером, например, так:

def aProcedure(cursor, arg1, arg2):
    cursor.execute("CALL A_PROCEDURE(%s, %s)", (arg1, arg2))
    return cursor.fetchall()

d = dbpool.runInteraction(aProcedure, arg1, arg2)
...
...