我在MySQL數據庫中有一個存儲過程,它只更新日期列並返回前一個日期。如果我從MySQL客戶端調用這個存儲過程,它可以正常工作,但是當我嘗試使用MySQLdb從Python調用存儲過程時,我似乎無法讓它給我返回值。使用MySQLdb從Python獲取MySQL存儲過程的返回值
下面的代碼到存儲過程:
CREATE PROCEDURE test_stuff.get_lastpoll()
BEGIN
DECLARE POLLTIME TIMESTAMP DEFAULT NULL;
START TRANSACTION;
SELECT poll_date_time
FROM test_stuff.poll_table
LIMIT 1
INTO POLLTIME
FOR UPDATE;
IF POLLTIME IS NULL THEN
INSERT INTO
test_stuff.poll_table
(poll_date_time)
VALUES
(UTC_TIMESTAMP());
COMMIT;
SELECT NULL as POLL_DATE_TIME;
ELSE
UPDATE test_stuff.poll_table SET poll_date_time = UTC_TIMESTAMP();
COMMIT;
SELECT DATE_FORMAT(POLLTIME, '%Y-%m-%d %H:%i:%s') as POLL_DATE_TIME;
END IF;
END
我使用嘗試調用存儲過程的代碼與此類似:
#!/usr/bin/python
import sys
import MySQLdb
try:
mysql = MySQLdb.connect(user=User,passwd=Passwd,db="test_stuff")
mysql_cursor = mysql.cursor()
results=mysql_cursor.callproc("get_lastpoll",())
print results
mysql_cursor.close()
mysql.close()
except MySQLdb.Error, e:
print "MySQL Error %d: %s" % (e.args[0], e.args[1])
sys.exit(1)
我知道你能做到IN和OUT參數,但是從我可以從MySQLdb文檔中確定的內容來看,這對於MySQLdb來說是不可能的。有沒有人有任何線索我怎麼能得到存儲過程的結果?
如果我從SQL工具運行它,這裏的輸出:
POLL_DATE_TIME
-------------------
2009-02-18 22:27:07
如果我運行Python腳本,它返回一個空集,這樣的:
()
如何在這種情況下將參數傳遞給遊標 – sandeep 2014-10-30 08:52:40