Панды to_sql отбрасывают строки при добавлении в таблицу MySQL - PullRequest
1 голос
/ 10 апреля 2019

Я работаю со статьями из интернет-газет с базой данных mysql и python. Я хочу использовать метод pandas to_sql на фрейме данных для добавления недавно очищенных статей в таблицу mysql. Это работает довольно хорошо, но у меня есть некоторые проблемы со следующим:

Поскольку статьи автоматически удаляются с новостных сайтов, около 1% из них имеют проблемы (кодировка, слишком длинный текст или тому подобное), и они не помещаются в полях таблицы mysql. Метод Pandas to_sql по какой-то причине игнорирует эти ошибки и отбрасывает неподходящие строки. Например, у меня есть следующая таблица mysql:

+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           | int(11)      | NO   | PRI | NULL    | auto_increment |
| title        | varchar(255) | YES  |     | NULL    |                |
| description  | text         | YES  |     | NULL    |                |
| content      | text         | YES  |     | NULL    |                |
| link         | varchar(300) | YES  |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+

И у меня также есть Dataframe, который содержит 15 строк и 4 столбца (заголовок, описание, содержимое, ссылка).

Если 1 из этих строк имеет заголовок, превышающий 255 символов, он не помещается в таблицу mysql. Я ожидал ошибку при выполнении df.to_sql('press', con=con, index=False, if_exists='append'), поэтому я знаю, что у меня есть проблема, которую нужно исправить; но фактический результат состоял в том, что 14 строк были добавлены вместо 15.

Это может сработать для меня, но мне нужно знать, какая строка была отброшена, чтобы я мог пометить ее для последующей ревизии. Можно ли сказать пандам сообщить мне, какие индексы игнорируются?

Спасибо!

...