Я столкнулся с проблемой, когда не могу импортировать свою таблицу результатов из MySQL Workbench в кадр данных pandas.
Моей первой попыткой было использовать mysql.connector
import mysql.connector as sql
import pandas as pd
db_connection = mysql.connect(#All the info necessary)
df = pd.read_sql(#Query)
Проблема с решением была в моем запросе. Я хотел отфильтровать строки, в которых были определенные слова. Поэтому мой запрос в MySQL Workbench выглядит примерно так:
select text_column from table where date < '2000-01-01' and date > '1999-12-31' and not( text_column like % cat % or text_column like % dog % .. and so on and so forth...) order by rand() limit 5
Насколько я понимаю, вы не можете выполнять такие запросы с помощью панд. Я посмотрел на этот вопрос, чтобы получить ответ: USING LIKE внутри pandas.query ()
У меня много данных, которые я не могу просто развернуть в таблице результатов, а затем получить подходящие строки.
Следующим шагом был экспорт полученной таблицы из MySQL Workbench, а затем использование панд для ее импорта.
Сначала я пытаюсь экспортировать его, используя расширение файла .xls. Проблема, с которой я столкнулся, заключалась в том, что она неправильно кодировала строки, я бы потерял информацию. Поскольку у меня Mac, я не могу импортировать эти данные с использованием кодировки utf-8. Пожалуйста, смотрите этот сайт для дальнейшего https://help.surveygizmo.com/help/encode-an-excel-file-to-utf-8-or-utf-16
Оттуда я попытался экспортировать его как .csv, но столкнулся с двумя проблемами. Во-первых, потому что это текстовые столбцы, я сталкиваюсь с проблемой, что существует более одного поля, где должен быть только один. Если разделитель представляет собой запятую или точку с запятой, он по-прежнему отображается в тексте и будет разделять текст, который следует рассматривать как одну ячейку.
Даже без использования разделителей данные не экспортируются правильно. Это потому, что в некоторых текстах есть символы новой строки. При экспорте это читается как новая строка.
Так как же правильно экспортировать эту таблицу результатов с одним столбцом только текста из MySQL Workbench? Я бы предпочел не манипулировать файлом вручную.