pythonでjoblib
を使って並列処理でMYSQLへインサートを行いたいのですが、以下のエラーが発生してうまくインサートできません。
ProgrammingError: unsupported operand type(s) for %: 'NoneType' and 'tuple'
プログラムは以下の感じです。
from joblib import Parallel, delayed import MySQLdb con = MySQLdb.connect(host="hoge", user="hoge", passwd="hoge", db="hoge", charset="hoge") cur = con.cursor() tokens = ["hoge","hoge","hoge","hoge","hoge"] def insToken(token): cur.execute("insert into hoge (hoge) value (%s) ",('1')) Parallel(n_jobs=-1)( [delayed(insToken)(token) for token in tokens] )
本当はtokens内の情報をインサートしたいのですが、1をインサートした場合でも上記エラーで落ちます。
この時、1は複数インサートされるのですが、何回めかの並列処理で上記エラーにより落ちているようです。
並列処理でなければインサートできます。
MySQLでは同一テーブルへの同時書き込みは可能(順次インサートされる)だと考えているのですが、そもそもこの動作は不可能なのでしょうか?
お分かりのおりましたら、ご教授お願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/09 17:29
2017/09/09 17:36 編集
2017/09/09 18:28