2017-12-22 3 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

01 23,516,

나는 다음과 같은 오류가 발생하고 이것이 일반적인 오류이기 때문에,이 오류에 관한 여전히 고정되지 않은 유래에 게시 및 부착 된 모든 시도 :

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

은 값을 할당 할 수 없으므로 사용되지 않은 하나 이상의 위치 매개 변수가 있음을 의미합니다.

파일에서 문제가있는 위치에 대해 두 가지 제안을 할 수 있습니다. 먼저, 로그 파일에 하나 이상의 헤더 행이있을 수 있습니다. 헤더 행에는 스크립트에서 예상하는 값이나 열의 수와 동일한 수의 행이 없을 수 있습니다. 이를 통해 초기 라인의 수를 건너 뛸 수 있습니다 :

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() 호출과 print를 포함하고, 독립적으로 그리고 함께 테스트했지만 여전히 '모든 매개 변수가 사용되지는 않았다.'라는 오류를 생성했다. 아주 고집 센. –

관련 문제