【发布时间】:2017-08-25 15:25:25
【问题描述】:
编辑:我现在尝试了 pyodbc 和 pymysql,结果相同(调用存储过程时返回零行)。之前忘了提到这是在 Ubuntu 16.04.2 LTS 上使用 MySQL ODBC 5.3 驱动程序 (libmyodbc5w.so)。
我在 Python 3.5.2 上使用 pymysql (0.7.11),针对 MySQL 5.6.10 数据库执行各种存储过程。我遇到了一个奇怪且不一致的问题,我偶尔会返回零结果,但我可以立即重新运行完全相同的代码并获得我期望的行数。
代码非常简单......
from collections import OrderedDict
import pymysql
from pymysql.cursors import DictCursorMixin, Cursor
class OrderedDictCursor(DictCursorMixin, Cursor):
dict_type = OrderedDict
try:
connection = pymysql.connect(
host=my_server,
user=my_user,
password=my_password,
db=my_database,
connect_timeout=60,
cursorclass=pymysql.cursors.DictCursor
)
param1 = '2017-08-23 00:00:00'
param2 = '2017-08-24 00:00:00'
proc_args = tuple([param1, param2])
proc = 'my_proc_name'
cursor = connection.cursor(OrderedDictCursor)
cursor.callproc(proc, proc_args)
result = cursor.fetchall()
except Exception as e:
print('Error: ', e)
finally:
if not isinstance(connection, str):
connection.close()
通常情况下,它工作得很好。但每隔一段时间,它几乎立即完成,但结果集中有零行。我看不到任何错误或任何东西,只是什么都没有......再次运行它,没有问题。
【问题讨论】:
标签: python mysql odbc pyodbc pymysql