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 でテストすると、同じ行数が得られ、結果が得られることに注意してください。