2015-11-09 5 views
1

Мне нужно прочитать csv и выполнить операцию вставки в mysql db. Мне сказали написать его на питоне, но не использовать панды. Но при передаче этих данных в db введите iam, получив ошибку, относящуюся к типу данных. Как, читая из csv, я получаю все столбцы как строку, а в моем dbtable некоторый столбец имеет тип данных как float и varchar mixe3d. поэтому в для строки в csv_data:Как изменить тип данных столбца при чтении из файла csv

типа несоответствие происходит. Поэтому, пожалуйста, помогите мне в
csv_data = csv.reader (открытое («D: /satya.csv»))

может я добавить некоторые условия или что-то так, что мой первый столбец будет переименовывать в виде строки и другие два будут становится плавающим. Или после чтения есть ли способ прочитать один столбец и изменить его тип данных. а затем передать его db, имеющего одинаковый тип. Так что я могу написать

cursor.execute ('INSERT INTO testcsv (имена, \ классы, знаки)' \ 'VALUES ("% s", "% s", "% s")' Пожалуйста, помогите

ответ

1

Ваш код почти нормально, что ему не хватает правильно форматирования для форматирования строки с % вы на самом деле нужно использовать % оператора:..

cursor.execute(
    'INSERT INTO testcsv(names, classes, marks) \ 
    VALUES("%s", "%s", "%s")' % row 
) 

при условии, что ваш row является 3-элементная tuple. Также, если вы хотите вставить числовое значение вместо строки, просто удалите двойные кавычки "..." в строке запроса.

+0

, удалив только «», не работал для меня, но, используя ваше предложение, я сделал cursor.execute ( 'INSERT INTO testcsv (имена, классы, метки) \ VALUES ("% s", "% f", "% f ") '% (строка [0], float (строка [1]), float (строка [2]) ) Это сработало для меня. – Satya

Смежные вопросы