前提・実現したいこと
webスクレイピングにより得たnames = ['A','B','C',...]などのデータをMtSQLに保存することが目的です。for文で各変数から値を取り出し、idsに格納した後、INSERTで各値を入れ保存したいのですが、最後のINSERTのところでエラーが出てしまいます。
エラーの原因とその解決方法を教えてください。
発生している問題・エラーメッセージ
--------------------------------------------------------------------------- ProgrammingError Traceback (most recent call last) ~/.pyenv/versions/3.5.4/lib/python3.5/site-packages/mysql/connector/cursor_cext.py in _batch_insert(self, operation, seq_params) 316 raise errors.ProgrammingError( --> 317 "Not all parameters were used in the SQL statement") 318 values.append(tmp) ProgrammingError: Not all parameters were used in the SQL statement During handling of the above exception, another exception occurred: InterfaceError Traceback (most recent call last) <ipython-input-13-5fc30c0943a7> in <module> ----> 1 c.executemany("INSERT INTO data03 VALUES(%s,%s,%s,%s,%s)",ids); 2 conn.commit() 3 conn.close() ~/.pyenv/versions/3.5.4/lib/python3.5/site-packages/mysql/connector/cursor_cext.py in executemany(self, operation, seq_params) 348 self._rowcount = 0 349 return None --> 350 stmt = self._batch_insert(operation, seq_params) 351 if stmt is not None: 352 return self.execute(stmt) ~/.pyenv/versions/3.5.4/lib/python3.5/site-packages/mysql/connector/cursor_cext.py in _batch_insert(self, operation, seq_params) 327 except Exception as err: 328 raise errors.InterfaceError( --> 329 "Failed executing the operation; %s" % err) 330 331 InterfaceError: Failed executing the operation; Not all parameters were used in the SQL statement
該当のソースコード
python
1import mysql.connector 2conn = mysql.connector.connect( 3 host = '***', 4 port = ***, 5 user = '***', 6 password = '***', 7 database = 'db01', 8) 9c = conn.cursor() 10c.execute('DROP TABLE IF EXISTS data03') 11c.execute("""CREATE TABLE data03 ( 12name text, 13soundrate integer, 14playtime integer, 15codec text, 16waterproofs integer)""") 17 18ids=[] 19for i,(name,soundrate,playtime,codec,waterproof) in enumerate(zip(names, rates, plytms, codecs, wtrprfs),1): 20 id=(i,name, soundrate, playtime, codec, waterproof) 21 ids.append(id) 22 23c.executemany("INSERT INTO data03 VALUES(%s,%s,%s,%s,%s)",ids); 24conn.commit() 25conn.close()
試したこと
VALUESの%sを?に変えたてみましたがエラーのままでした。
names, rates, plytms, codecs, wtrprfsそれぞれをtupleにしても変わりませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/11 06:58