在Python和MySQL中使用存储过程变量

0 投票
1 回答
1883 浏览
提问于 2025-04-16 12:50

我该如何在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

撰写回答