From d9f4cec2ca2b768c8d3c1c6e6e505092ebbd051e Mon Sep 17 00:00:00 2001 From: Vilnis Termanis Date: Sat, 20 Jan 2018 17:15:31 +0000 Subject: [PATCH 1/2] Reduce callproc roundtrip time - Make only one single call to SET variables used as procedure parameters --- pymysql/cursors.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pymysql/cursors.py b/pymysql/cursors.py index baf0972e..105b0b4f 100644 --- a/pymysql/cursors.py +++ b/pymysql/cursors.py @@ -259,9 +259,10 @@ def callproc(self, procname, args=()): disconnected. """ conn = self._get_db() - for index, arg in enumerate(args): - q = "SET @_%s_%d=%s" % (procname, index, conn.escape(arg)) - self._query(q) + if args: + argFmt = '@_{0}_%d=%s'.format(procname) + self._query('SET %s' % ','.join(argFmt % (index, conn.escape(arg)) + for index, arg in enumerate(args))) self.nextset() q = "CALL %s(%s)" % (procname, From 3dda4a5807174ea2fc428484d116e9e2a12f2983 Mon Sep 17 00:00:00 2001 From: INADA Naoki Date: Thu, 15 Mar 2018 01:57:48 +0900 Subject: [PATCH 2/2] Update cursors.py --- pymysql/cursors.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pymysql/cursors.py b/pymysql/cursors.py index 105b0b4f..bbcc2e25 100644 --- a/pymysql/cursors.py +++ b/pymysql/cursors.py @@ -260,8 +260,8 @@ def callproc(self, procname, args=()): """ conn = self._get_db() if args: - argFmt = '@_{0}_%d=%s'.format(procname) - self._query('SET %s' % ','.join(argFmt % (index, conn.escape(arg)) + fmt = '@_{0}_%d=%s'.format(procname) + self._query('SET %s' % ','.join(fmt % (index, conn.escape(arg)) for index, arg in enumerate(args))) self.nextset()