#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» с кавычками в качестве контейнера.