2017-12-22 5 views
0

は、下記(情報の7列)MySQLのテーブル内のデータをロードするための私のコードでSQL文で使用されませんでした:mysqlの挿入コードは、次のエラーを生成:すべてのパラメータが

以下
#!/usr/bin/env python 
import mysql.connector, csv, sys 

csv.field_size_limit(sys.maxsize) 

cnx = mysql.connector.connect(user='testuser', password= 'testuser', database='database') 

cursor = cnx.cursor() 

table=csv.reader(file("logs.txt"), delimiter='\t') 

for row in table: 

     cursor.execute("INSERT INTO first_table (column1, column2, column3, column4 , column5, column6, column7) VALUES (%s, %s, %s, %s, %s, %s, %s)", row) 

cnx.commit() 

cnx.close() 

がの切り捨て内容が何でありますかlogs.txtファイル7列(タブ区切り)、から成り、最後の列は、(をmouse_phene_id)が空であるか、スペースで区切られた単一または複数の項目を有することができる:

human_gene_symbol  entrez_id  homolog_id  hgnc_assoc  mouse_gene_symbol  mouse_mgi_id mouse_phene_id 
A1BG  1  11167 yes  A1bg  MGI:2152878   
A1CF  29974 16363 yes  A1cf  MGI:1917115  MP:0005387 MP:0005386 MP:0005388 MP:0005385 MP:0002873 MP:0010768 MP:0005369 MP:0005376 MP:0005384 MP:0005378 
A2M  2  37248 yes  A2m  MGI:2449119   
A3GALT2 127550  16326 yes  A3galt2 MGI:2685279   
A4GALT 53947 9690 yes  A4galt MGI:3512453  MP:0005386 MP:0010768 MP:0005376  
A4GNT  51146 87446 yes  A4gnt  MGI:2143261  MP:0005384 MP:0002006 MP:0005385 MP:0005381 MP:0005387   
AAAS  8086 9232 yes  Aaas  MGI:2443767  MP:0005389 MP:0005386 MP:0005378  
AACS  65985 11322 yes  Aacs  MGI:1926144   
AADAC  13 37436 yes  Aadac  MGI:1915008 

logs.txt file screenshot

は、私は次のエラーを取得すると、これは一般的なエラーであるため、私はこのエラーに関連して、まだ未確定のStackOverflowに掲載して貼り付けたすべて試してみました:

Traceback (most recent call last): 
    File "insert_mysql.py", line 23, in <module> 
    cursor.execute("INSERT INTO first_table (column1, column2, column3, column4 , column5, column6, column7) VALUES (%s, %s, %s, %s, %s, %s, %s)", row) 
    File "/usr/local/lib/python2.7/dist-packages/mysql/connector/cursor.py", line 551, in execute "Not all parameters were used in the SQL statement") 
mysql.connector.errors.ProgrammingError: Not all parameters were used in the SQL statement 

first_table:

first_table_shot

ご協力いただきありがとうございます。前もって感謝します。

+1

'logs.txt'ファイルからいくつかの行を表示できますか? –

+0

@TimBiegeleisen私はlogs.txtファイルのいくつかの行を含む自分の投稿を編集しました。他の情報が必要な場合はお知らせください。 –

+0

列内に複数の値があるようですか?行2のような長い値は、フィールド間のどこに描かれますか?タブはそのままではレンダリングが難しいので、スクリーンショットを提供できますか? – Parfait

答えて

1

表示されているエラーは、logs.txtファイルの行が原因です(挿入準備文が予期している項目数(7)と同じではありません)。エラー

Not all parameters were used in the SQL statement

は、値を割り当てることができないため、使用されなかった1つ以上の位置パラメータがあることを意味します。

ファイルのどこに問題があるのか​​2つの提案をすることができます。まず、ログファイルに、ヘッダー行が1つ以上あることがあります。このヘッダー行は、スクリプトが想定する列数または値の型と同じ数ではない可能性があります。あなたは、この経由して、最初の行の任意の数をスキップすることがあります。

skip_first_line = next(table) 
skip_second_line = next(table) 
# etc. 

を言い換えれば、ちょうどあなたが挿入する実際のデータが含まれていないログファイルの最初の行の任意の数を消費するnext()を呼び出します。

もしそうでなければ、問題のある行はおそらくファイルの途中にあります。

for row in table: 
    cursor.execute("INSERT INTO first_table (column1, column2, column3, column4 , column5, column6, column7) VALUES (%s, %s, %s, %s, %s, %s, %s)", row) 
    print row 
+0

フィードバックをいただきありがとうございます。私はあなたが提案したように正確に行いました。next()呼び出しと印刷を含み、独立してテストしましたが、同じパラメータを使用していませんでした。非常につまらない。 –

関連する問題