zzaneshao
从 tormysql.helpers.ConnectionPool 拿到的连接池,怎么可以 callproc
#45 · closed · 1 comments
从 tormysql.helpers.ConnectionPool 拿到的连接池,怎么可以 callproc
献上代码: connection = yield self.tormysql.helpers.ConnectionPool(**kwargs).connect() cursor = connection.cursor() cursor.callproc(procname, args) result = yield self.async_pools.execute('select @_%s_0' % procname) result = cursor.fetchall() 查看 pymysql 源码: Compatibility warning: PEP-249 specifies that any modified parameters must be returned. This is currently impossible as they are only available by storing them in a server variable and then retrieved by a query. Since stored procedures return zero or more result sets, there is no reliable way to get at OUT or INOUT parameters via callproc. The server variables are named @_procname_n, where procname is the parameter above and n is the position of the parameter (from zero). Once all result sets generated by the procedure have been fetched, you can issue a SELECT @_procname_0, ... query using .execute() to get any OUT or INOUT values. Compatibility warning: The act of calling a stored procedure itself creates an empty result set. This appears after any result sets generated by the procedure. This is non-standard behavior with respect to the DB-API. Be sure to use nextset() to advance through all result sets; otherwise you may get disconnected. 可找到解决方法。