Как хранить списки в бд?

Здравствуйте, хочу загрузить данные из датафрейма пандаса в базу данных MySQL. Вот шаблон данных:
all_data = {
    'Organization_name': [],
    'Organization_voen': [],
    'Organization_adress': [],
    'Event_name': [],
    'Event_number': [],
    'Classification_code': [],
    'Suggested_price': [],
    'Event_start_date': [],
    'Submission_deadline': [],
    'Envelope_opening_date': [],

    'Heading': [],
    'Disclosure': [],
    'Quantity': [],
    'Measure_unit': [],
    'Code': [],

    'Participation_fee': [],
    'Participation_description': [],

    'Usage_fee': [],
    'Usage_description': [],

    'Full_name': [],
    'Contact': [],
    'Position': [],
    'Phone_number': []
}


где
'Heading': [],
'Disclosure': [],
'Quantity': [],
'Measure_unit': [],
'Code': []


являются сериями пандаса(после превращения в датафрейм) внутрь которых вложены списки содержащие строки, а в остальных просто строки. Серии со строками у меня получилось перенести а вот те что с вложенными списками нет. Как их перенести?
  • Вопрос задан
  • 568 просмотров
Решения вопроса 2
Maksim_64
@Maksim_64
Data Analyst
Если использовать реляционные базы данных то делить на таблицы и описывать связи, предварительно избавившись от списков, на уровне пандаса, переформатировав (распрямив) датафрейм, метод explode например поможет избавится от списков. В целом одна и та же информация, может быть представлена в разном виде и в реляционных бд предпочтительнее (но не обязательно) иметь простые типы данных.

Использовать не реляционные базы данных, они больше подходят если данные имеют вложенную структуру и простым переформатированием не обойтись.

Если тебя все устраивает и тебе удобно работать с фреймом, но хочется иметь такое представление информации только не в памяти, а на диске. Можешь использовать например сериализацию, метод для фреймаto_pickle, и соответственно read_pickle для чтения.

По итогу, когда ты собираешься хранить данные, ты их в дальнейшем будешь извлекать и анализировать. Работать с колонкам содержащими вложенные списки, можно, но не так эффективно, как с правильно организованными данными, будь уверен, что ты хранишь в колонках вложенные списки от отсутствия альтернатив.
Ответ написан
Комментировать
@Akina
Сетевой и системный админ, SQL-программист.
Вложенные списки организуют классическую связь 1:N (одному блоку данных соответствует несколько записей из списка).
Если эти строки списка как-то обрабатываются (поиск, фильтрация и пр.), то наиболее разумна схема с 2 таблицами и внешним ключом.
Если же списки только сохраняются и извлекаются, без вообще какой-либо обработки, то можно использовать предложенную mxelgin схему с хранением всего списка в одном поле TEXT либо JSON в сериализованном виде.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы