csv ファイルを解析し、MySQL テーブルの入力を生成するスクリプトに取り組んでいます。
csv.reader を介してデータをインポートするため、すべての行が文字列のリストになります。行を反復処理して、さまざまなエントリをデータベースに入れたいと考えています。
次のテストを実行できます。
sql = "INSERT INTO `testSmall` (`idtestSmall`, `column1`, `column2`) VALUES (1, 'entry1', 'entry2');"
cursor.execute (sql)
したがって、私のSQL接続は機能し、原則のSQL構文は問題ありません。そこに入れたいエントリにもアクセスできます。それらは正しく、期待するデータ型です。ただし、反復内の変数で同じ SQL 構文を使用できないようです。
allData = csv.reader(open('TestTable.csv', 'rb'), delimiter=',', quotechar='|')
for row in allData:
sql = "INSERT INTO `testSmall` (`idtestSmall`, `column1`, `column2`) VALUES (row[0], row[1], row[2]);"
cursor.execute (sql)
これにより、構文エラーが生成されます。
Error 1064: You have an error in your SQL syntax; check the manual that corresponds to our MySQL server version for the right syntax to use near '[0], row[1], row[2])' at line 1
しかし、データ型は正しく、SQL 構文は実際の例と同じです...
私が間違っていることと、それを機能させる方法を誰かに教えてもらえますか?
(最後に、純粋な csv エントリだけでなく派生値も挿入したいので、mysql 一括インポートだけを使用していません。)
よろしくお願いします。