Почему столбец mysql varchar добавил .0 к phonenumer при вставке с помощью python pandas

#mysql #python-3.x #pandas

#mysql #python-3.x #pandas

Вопрос:

Таблица, созданная с несколькими столбцами с 5 столбцами телефонных номеров, все они имеют тип данных типа

 varchar(15)
  

Но когда я вставляю номер телефона из 10 цифр без — или (), например 9999999999, тогда только в столбцах phonenumber3, phonenumber4, phonenumber5 обновляются как 9999999999.0

Я читаю из CSV и записываю в таблицу, используя pandas to_sql().

Почему это происходит?

Комментарии:

1. Может быть из-за отсутствия данных, например NaN , которые понижают значение столбца до float . Попробуйте прочитать CSV с dtype={'phone_col_name':str} помощью .

2. @ Quang Hoang Нет. Если я вставлю одно и то же число во все 5 столбцов, то столбцы 1 и 2 будут обновлены нормально. Только эти 3,4 и 5 обновлены. 0 Это может быть какая-либо проблема с кодировкой?

3. MySQL ничего не добавит. Он хранит строго значение, предоставленное клиентом.

4. @ Quang Hoang Чтение CSV с dtype={‘phone_col_name’:str} сработало хорошо!

Ответ №1:

Если данные CSV генерируются с сервера (неизмененные пользователем), «нулевые» данные сохраняются при импорте. Предполагая, что » кавычки как контейнер. Все должно быть хорошо.

Если данные CSV изменены пользователем, например, редактирование / сохранение… «Нулевые» данные будут обрезаны, так как редактор программного обеспечения, такой как Excel или libre office, опустит «ноль» во время сохранения. Обходной путь заключается в редактировании файла CSV в текстовом редакторе (например, Sublime), столбцы должны быть сохранены как «012345678» с кавычками в качестве контейнера.