2017-11-08 53 views
0

cursor.callproc()を使用してMySQLストアドプロシージャを呼び出そうとしたときに、いくつかの問題が発生しました。複数の入力および出力パラメータがあった場合には、そこには問題はなかったし、すべてが次のように正常に動作します: 私は5入力/出力パラメータを使用して、次のようにMySQLので手順を作成しました:Pythonでcursor.callproc()を使用してMySQLストアドプロシージャを呼び出す

create procedure enrollclass(in yeartime int, in quartertime char(20), in stid char(20), in course_no char(20), out result int) 

とのようなものを使用してPythonでプロシージャを呼び出しますこれは:

arg2 = ('2016', 'Q2', info[0][0], course_no, 0) 
ac = cursor.callproc('enrollclass',arg2) 

これはうまくいきました。しかし、私はこのような(無出力パラメータ付き)のみの1つの入力パラメータを持つ別のプロシージャを呼び出した場合:

arg3 = ('INFO1101') 
    cursor.callproc('prerequisite', arg3) 
その後、

システムは私にエラーを与え続け:この行を使用して

create procedure prerequisite(in course_no char(20)) 

やプロシージャを呼び出しメッセージ 'argsはシーケンスでなければなりません'。私はシーケンスを形成する他の引数がないので、それを修正する方法はわかりません。誰かがここで何が起こっているか教えてもらえますか?ありがとう!

+0

[]、代わりに丸括弧の()ユーザー角括弧を引数を作成し、それが動作するはずのように、コンマを追加する必要がタプル単一要素を作成します。 – PerunSS

答えて

0

あなたは

arg3 = ('INFO1101') 

は、単一の要素を含むタプルを作成するだろうと思うかもしれないが、それはしていません。この文脈において、かっこは「操作の順序」指定子として機能する。

foo = (2 + 1) * 4 

あなたは

arg3 = ('INFO1101',) 
関連する問題