溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python MySQL callproc調(diào)用數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程

發(fā)布時(shí)間:2020-09-23 14:59:30 來(lái)源:億速云 閱讀:226 作者:Leah 欄目:編程語(yǔ)言

Python MySQL callproc調(diào)用數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

MySQL數(shù)據(jù)庫(kù)模塊為游標(biāo)對(duì)象提供了一個(gè)非標(biāo)準(zhǔn)的 callproc(self, procname, args=()) 方法,該方法用于調(diào)用數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程。

callproc方法的procname參數(shù)代表存儲(chǔ)過(guò)程的名字,而 args 參數(shù)則用于為存儲(chǔ)過(guò)程傳入?yún)?shù)。

下面的 SQL 腳本可以在 MySQL 數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)簡(jiǎn)單的存儲(chǔ)過(guò)程。打開(kāi) MySQL 的命令行客戶端,連接 python 數(shù)據(jù)庫(kù)之后,輸入如下 SQL 腳本來(lái)創(chuàng)建存儲(chǔ)過(guò)程:

delimiter //
create procedure add pro(a int, b int, out sum int)
begin
set sum = a + b;
end;
//

下面程序示范了使用 MySQL 數(shù)據(jù)庫(kù)模塊來(lái)調(diào)用存儲(chǔ)過(guò)程:

# 導(dǎo)入訪問(wèn)MySQL的模塊
import mysql.connector

# ①、連接數(shù)據(jù)庫(kù)
conn = conn = mysql.connector.connect(user='root', password='32147',
    host='localhost', port='3306',
    database='python', use_unicode=True)
# ②、獲取游標(biāo)
c = conn.cursor()
# ③、調(diào)用callproc()方法執(zhí)行存儲(chǔ)過(guò)程
# 雖然add_pro存儲(chǔ)過(guò)程需要3個(gè)參數(shù),但最后一個(gè)參數(shù)是傳出參數(shù),
# 因此程序不會(huì)用它的值
result_args = c.callproc('add_pro', (5, 6, 0))
# 返回的result_args既包含了傳入?yún)?shù)的值,也包含了傳出參數(shù)的值
print(result_args)
# 如果只想訪問(wèn)傳出參數(shù)的值,可直接訪問(wèn)result_args的第3個(gè)元素,如下代碼
print(result_args[2])
# ④、關(guān)閉游標(biāo)
c.close()
# ⑤、關(guān)閉連接
conn.close()

上面程序中,第 13 行代碼就是調(diào)用存儲(chǔ)過(guò)程的關(guān)鍵代碼。使用 MySQL 數(shù)據(jù)庫(kù)模塊調(diào)用存儲(chǔ)過(guò)程非常簡(jiǎn)單,存儲(chǔ)過(guò)程需要幾個(gè)參數(shù),程序通過(guò) callproc() 方法調(diào)用存儲(chǔ)過(guò)程時(shí)就傳入一個(gè)包含幾個(gè)元素的元組;對(duì)于存儲(chǔ)過(guò)程的傳入?yún)?shù),該參數(shù)對(duì)應(yīng)的元組元素負(fù)責(zé)為傳入?yún)?shù)傳值;對(duì)于存儲(chǔ)過(guò)程的傳出參數(shù),該參數(shù)對(duì)應(yīng)的元組元素隨便定義即可。

運(yùn)行上面的程序,可以看到如下輸出結(jié)果:

(5, 6, 11)
11

從上面的輸出結(jié)果來(lái)看,當(dāng)程序使用 Python 調(diào)用存儲(chǔ)過(guò)程后,程序會(huì)返回傳入?yún)?shù)和傳出參數(shù)組成的元組,如第一行輸出結(jié)果所示。如果程序只需要獲取傳出參數(shù)的值,則通過(guò)返回的結(jié)果元組取出對(duì)應(yīng)的值即可。

關(guān)于Python MySQL callproc調(diào)用數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI