python cursor.callpro c () функция не вызывает процедуру - PullRequest
0 голосов
/ 09 марта 2020

Новый (i sh) в SQL, только что обнаруженные хранимые процедуры.

Реструктуризация монолитного c 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], но, конечно, это имя аргумента. Я попытался перебрать результаты в a для l oop, это тоже не сработало ... Python, похоже, не вызывает процедуру. Надеюсь, это достаточно информации, ударив меня головой о стол.

1 Ответ

0 голосов
/ 09 марта 2020

Согласно комментарию rdas, предкурсорам нужна переменная out, и на них должна указываться @ var_name

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

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