我可以在mysql sp中调用python脚本吗?

时间:2014-11-25 20:04:29

标签: python mysql stored-procedures

我想在存储过程中调用python脚本,从python返回结果并将其分配给mysql变量。这可能吗?我该怎么做?

谢谢。

1 个答案:

答案 0 :(得分:0)

我使用Python MySQL数据库API - MySQLdb 做了类似的事情。您可以从here下载。我没有从存储过程中调用python脚本,反之亦然,即从python中调用存储过程,并将参数传递给它。

存储过程采用两种类型的参数(参数)。 INOUTIN类型的参数是存储过程的输入,而OUT类型的参数是存储过程的输出。您将能够通过以下示例更好地理解它。

假设这是我的存储过程。

CREATE PROCEDURE add(IN num1 INT, IN num2 INT, OUT add_result INT)
BEGIN
  SET add_result := num1 + num2;
END;

现在在python shell中,您可以将两个参数传递给存储过程,并在add_result变量中返回结果,该变量是存储过程的第三个参数。

>>> import MySQLdb
>>> mysql = MySQLdb.connect(user=User,passwd=Passwd,db="test_db")
>>> mysql_cursor = mysql.cursor()
>>> args = (5, 7, 0) # 0 is to hold value of the OUT argument add_result
>>> cursor.callproc('add', args)
('5', '7', 12L)
优雅,不是吗?有关此API的更多信息,请阅读这些链接。

MySQLdb User's Guide

Method MySQLCursor.callproc()

希望这有帮助。