在Python和MySQL中使用存储过程变量
我该如何在MySQL中设置一个存储过程,以便使用外部变量呢?我之前写过存储过程,但没有用到外部输入。这次的连接字符串是通过pyODBC来的。
然后,我该如何用Python调用这个存储过程,并输入那个变量呢?
cursor.execute('Call d.MySP' ????)
1 个回答
2
假设你在使用MySQLdb,根据文档,你可以这样调用:
cursor.callproc('d.MySP',args)
深入了解一下,看看这些变量是怎么设置的,以及如何执行CALL
语句:
def callproc(self, procname, args=()):
from types import UnicodeType
db = self._get_db()
charset = db.character_set_name()
for index, arg in enumerate(args):
q = "SET @_%s_%d=%s" % (procname, index,
db.literal(arg))
if isinstance(q, unicode):
q = q.encode(charset)
self._query(q)
self.nextset()
q = "CALL %s(%s)" % (procname,
','.join(['@_%s_%d' % (procname, i)
for i in range(len(args))]))
if type(q) is UnicodeType:
q = q.encode(charset)
self._query(q)
self._executed = q
if not self._defer_warnings: self._warning_check()
return args