2016-12-28 33 views
3

我在python使用MySQL,並想從存儲過程中獲取數據的多個列表。獲取多個列表/數據從MySQL的StoredProcedure

我使用PyMySql與我的數據庫連接。並試圖做這樣的事情,但它不工作

CREATE DEFINER=`root`@`%` PROCEDURE `spGetData`(IN ssscreenId INT(11),) 
BEGIN 
    SELECT clientId, clientName FROM apl_cb.Client WHERE isActive = 1 AND isDeleted = 0; 

    SELECT bankId, bankName, bankAddress FROM apl_cb.Bank WHERE isDeleted = 0 AND isActive = 1; 

    SELECT eventId, eventName, eventGroup FROM apl_cb.Event WHERE isActive = 1 AND isDeleted = 0 AND menuEvent = 0 AND screenId = ssscreenId; 

END 

任何形式的幫助將不勝感激。

感謝

+0

爲什麼所有這些併發症?爲什麼不只是在python中執行三個查詢? – e4c5

+0

我不想一次又一次地執行quires來創建結果。通過這樣做我可以節省查詢執行時間! –

+1

你怎麼試圖讓你的結果在python中? –

回答

4

您是否嘗試過使用在你的Python cursornextset()方法跳轉到下一個結果集? (python.org/dev/peps/pep-0249/#nextset)

如果你已經嘗試過了,它不工作,那麼你的運氣了;您的Python程序將無法從單個存儲過程中檢索多個結果集。

請記住,MySQL的存儲過程提供封裝優勢,但沒有效率優勢。在存儲過程中發出三個查詢所花費的時間與從Python程序中一個接一個地發出它們的時間相同(或者可能稍高一點)。以下是對其中一部分的解釋。 http://www.joinfu.com/2010/05/mysql-stored-procedures-aint-all-that/

+0

我的sql商店程序絕對是偉大的文章。但它已經7歲了,當時仍然有很少人評論說,在博客文章中描述的作者很少改變/更新。你能提供一些關於這方面的最新信息嗎? –