編輯:我現在已經嘗試pyodbc以及pymysql,並具有相同的結果(調用存儲過程時返回零行)。之前忘了提及這是在Ubuntu 16.04.2 LTS中使用MySQL ODBC 5.3驅動程序(libmyodbc5w.so)。MySQL存儲過程有時返回0行
我在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()
往往不是,它工作得很好。但每隔一段時間,它幾乎立即完成,但結果集中的行數爲零。沒有錯誤,我可以看到或任何東西,只是沒有...再次運行,沒有問題。