2

Python(2.7.3) では、OurSQL(0.9.2) の cursor.execute を使用してプロシージャを呼び出します。ただし、cursor.nextset() または cursor.fetchone() を使用して結果を取得しようとすると、「oursql.ProgrammingError: (None, 'no results available', None)」というエラーが表示されます。

私が本当に奇妙だと思うのは、cursor.rowcount が 0 ではないことです。

私のPythonコードは次のようになります。

import oursql

conn = oursql.connect(host='www.example.com', user='foo', passwd='bar', port=3306)
curs = conn.cursor()

curs.execute("CALL db.foo(?, ?, ?)", (1, 2, 3))
print("Row count: " + str(curs.rowcount))
print(curs.nextset())
res = curs.fetchone()
print(res)
curs.close()

出力は次のとおりです。

Row count: 189
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    print(curs.nextset())
  File "cursor.pyx", line 169, in oursql.Cursor.nextset (oursqlx/oursql.c:16436)
  File "cursor.pyx", line 161, in oursql.Cursor._check_statements (oursqlx/oursql.c:16392)
oursql.ProgrammingError: (None, 'no results available', None)

ご覧のとおり、「利用可能な結果はありません」と表示されていますが、行数は「189」です。

ここで何か間違ったことをしていますか?この同じクエリを MySQL Workbench でテストすると、同じ行数が得られ、結果が得られることに注意してください。

4

0 に答える 0