EDIT:私は今pyodbcとpymysqlを試してみましたが、同じ結果(ストアドプロシージャを呼び出すとゼロ行が返されます)があります。これは、MySQL ODBC 5.3ドライバ(libmyodbc5w.so)を使用してUbuntu 16.04.2 LTS上にあることを前に言いました。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()
多くの場合、それだけで正常に動作します。しかし、しばらくしては、ほぼ即座に完了しますが、結果セットにはゼロの行があります。私が見ることができる何のエラーも何も、ただ何も...それをもう一度実行しても問題はありません。