Ниже приведен мой код для загрузки данных в таблице mysql (7 столбцов информации):
#!/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
Я получаю следующую ошибку, и поскольку это обычная ошибка, я пробовал все, что было опубликовано в 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:
Большое спасибо за любую помощь, советы. Заранее спасибо.
Ошибка, которую вы видите, скорее всего, вызвана рядом в файле logs.txt
который не имеет того же количества элементов (7), которое ожидает ваш оператор, подготовленный вставки. Ошибка
Не все параметры были использованы в инструкции SQL
означает, что у вас был один или несколько позиционных параметров, которые не могли быть присвоены значениям и, следовательно, не использовались.
Я могу сделать два предложения о том, где в файле может возникнуть проблема. Во-первых, файл журнала может содержать одну или несколько строк заголовка, которые могут не иметь одинакового количества столбцов или типов значений, ожидаемых сценарием. Вы можете пропустить любое количество начальных строк через это:
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