2017-05-18 7 views
0

私はcsvファイルからデータを読み取り、その内容をMySQLにプッシュするPythonコードを持っています。上記のエラーが発生しています。ここでは、コードは次のようになります。Pythonでcsvファイルを読み書きする際にエラーが発生しました

csv_data = csv.reader('ga_python_data.csv') 
csv_data = csv.reader('data.csv') 

for row in csv_data: 
    cursor.execute('INSERT INTO new (date,sessions) VALUES (%s, %s)',*row) 

エラーは次のとおりです。

TypeError: not enough arguments for format string. 
+0

「上記のエラーを」何:あなたは、Python 3.xを使用している場合は、次のように行を変更する必要がありますか? – Mureinik

+0

フルトレースバックでエラーを表示します。 – cdarke

+0

少なくとも、エラーが何であるかのアイデアが必要です。 – Henry

答えて

0

現在、1つの引数行がありますが、2つの%s指定子があります。行の後に2番目の引数を追加する必要があります。あなたの場合は、CSVファイルからエントリを読み込んでいます。理論的には、行ごとに2つのアイテムが常に存在するはずですが、CSVファイルに空の行がある場合、または行の1つにエントリがない場合は問題が発生します。このスクリプトでは、2つの値を含む行のみを受け入れます。

最後に、ファイルを正しく開くことが重要です。 Python 2.xでは、ファイルをバイナリモードで開く必要があります。

with open('data.csv', 'r', newline='') as f_data: 
0

@MartinEvans引数が不足しているに関するコメントが正しいです:

Currently you have one argument row but you have two %s specifies. You need to add the second argument after row.

rowはあなたが必要挿入する2つの文字列が含まれている場合このように開梱するには*row

eは次のようになります。

cursor.execute("INSERT INTO metrics VALUES ('%s', '%s')", *row) 
0

あなたの行は単一の文字列であるため、問題がある、とあなたは二つの文字列をペーストしようとしています。

tokens=row.split(',') 
cursor.execute(....., tokens[0],tokens[1]) 
関連する問題