2017-03-28 16 views
0

私はpythonでmysqlサーバと連携するためにpymysqlを使用しています。異なるカラムの相互参照が必要です。これを行うにはforループをmysql文で使用する

私は

for i in range(10): 
    sqlstat = 'select refs from `pcite` where id = id_paper(i) ;' 

で、Pythonでループに適用されます。しかし、これは動作しません。問題はiterater iと思われる。これを回避する方法はありますか?

+0

どのような方法がありますか?何がうまくいかない? 'id_paper(i)'はあなたのPythonコードで関数を呼び出すはずですか?そうではありません。 –

+0

id_paper(i)は私に特定のID番号 – 12344343243

+0

を与えて、一連のmysqlステートメントを実行したいのと同じようにしてください: 'pcite'からの参照の選択id = 12312、' pcite'のid = 12323などからの参照の選択 – 12344343243

答えて

0

私がコメントで述べたように、これはループとは関係ありません。あなたのコードはコードではなく、単なる文字列です。あなたが関数を呼び出した結果を格納するための文字列を必要とする場合は、文字列の外に呼び出しを取り、結果を補間する必要があります。

sqlstat = 'select refs from `pcite` where id = {};'.format(id_paper(i)) 

注しかし、これはSQL文であるため、あなたがすべきこと値を補間するのではなく、executeメソッドに渡します。

sqlstat = 'select refs from `pcite` where id = %s;' 
cursor.execute(sqlstat, [format(id_paper(i)]) 
+0

ありがとう、これは私が必要とするexcactlyです。私の言い訳が不明な場合は申し訳ありませんが、私はプログラマーではありません:) – 12344343243

関連する問題