簡體   English   中英

python cursor.callproc() 函數不調用過程

[英]python cursor.callproc() function not calling procedure

新(ish)到 SQL,剛剛發現存儲過程。

重構一個整體的 Python 3.7 腳本。

這是我的存儲過程:

CREATE PROCEDURE domSel(IN xip VARCHAR(16))
BEGIN
SELECT domain FROM pytest.nodes2 WHERE ip = xip
END;

它根據 IP 選擇域。 Python 中的原始代碼片段如下所示:

    for i,x,y in ip_ll:
        cursorA.execute("SELECT domain FROM pytest.nodes2 WHERE ip = '" + str(i) + "'")
        hosts_low.append(cursorA.fetchone())
        ips_low_latency.append(i)
        lat_low.append(x)

以下行應該是替換:

# The #s are of course the IP address.
result_arg = cursorA.callproc('domSel', args=('###.##.###.###,))
print(result_arg[1])

但它給了我錯誤:

Traceback (most recent call last):
  File "./2queryMagic.py", line 45, in <module>
    print(result_arg[1])
IndexError: tuple index out of range

我試圖打印 arg[0],但這當然是參數名稱。 我嘗試在 for 循環中迭代結果,這也不起作用...... Python 似乎沒有調用該過程。 希望這是足夠的信息,把我的頭從辦公桌上敲下來。

根據 rdas 的評論,程序需要一個 out 變量,並且必須使用 @var_name 引用

call domSel('###.##.###.###', @dom);

(worked, but ofc relayed the actual domain)
+-------------------+
| domain            |
+-------------------+
| -domain.com      -|
+-------------------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM