Как разработчики, мы сталкиваемся со многими случаями, когда мы импортируем данные из одного источника и хотим загрузить эти данные в другой источник. Это была та же самая ситуация, с которой я столкнулся. Я экспортировал данные из Notion и хотел импортировать их в Атлас MongoDB.

Для вставки данных в MongoDB мы будем использовать пакет python pymongo. Чтобы установить pymongo, используйте следующую команду:

pip install pymongo==3.12.3

Примечание. Обратите внимание, что в более новой версии pymongo возникла проблема. Итак, я предлагаю использовать версию 3.12.3.

Я также буду использовать библиотеку pandas. Мне проще работать с pandas, чем с модулем Python по умолчанию csv. Вы можете установить pandas так же, как мы установили pymongo.

pip install pandas

Как читать данные CSV в Python

Для чтения файлов CSV, как я упоминал ранее, мы будем использовать библиотеку pandas. Чтобы прочитать файл CSV, нам нужно всего 2 строки кода.

import pandas as pd

df = pd.read_csv("CsvFile.csv") # return a dataframe
print(df.head()) # df.head() return first 5 records

Теперь, после прочтения файла CSV, нам нужно преобразовать его в формат dict или json. Почему?
Нам нужно преобразовать его в dict, потому что MongoDB — это база данных на основе JSON. И мы можем легко конвертировать dict в формат json и вставлять данные в MongoDB.

Как преобразовать pandas 'dataframe” в "dict"

Панды предоставляют метод df.to_dict(), который преобразует фрейм данных в массив словарей. У нас есть несколько строк, поэтому нам нужен массив словарей.

data_dict = df.to_dict("records")

Здесь важно ключевое слово record. Это аргумент, который преобразует его в правильный массив dict. Вы можете ознакомиться с официальной документацией.

Как вставить данные в MongoDB

Как я уже говорил, мы будем использовать pymongo для подключения к MongoDB. Вы можете сделать это, используя следующий код:

from pymongo import MongoClient
  with MongoClient(URL) as client:
    db = client.prod # prod is a database name
    tools = db.tools # tools is a collection name
    …

Здесь мы использовали диспетчер контекста (оператор With), поэтому нам не нужно вручную закрывать соединение после выполнения операций. Нам понадобится URL-адрес нашей базы данных, независимо от того, является ли она локальной или размещенной где-то.

Итак, мы получили коллекцию, для загрузки данных в эту коллекцию у нас есть 2 варианта. Либо мы вставляем строку за строкой, либо все данные строки сразу. Сначала я покажу вам, как вы можете вставить все данные сразу.

Как вставить сразу несколько строк в MongoDB

Чтобы вставить сразу несколько данных, мы можем использовать метод insert_many().

with MongoClient(URL,connect=False) as client:
  db = client.prod
  tools = db.tools
  result = tools.insert_many(data_list)

Если вы не хотите никаких других операций во время вставки и уже подготовили массив dict, как мы это делали ранее. Это путь.

Как вставить данные в MongoDB

Чтобы вставлять данные построчно, мы можем использовать метод insert_one(). Например, мы хотим добавить идентификатор к каждой строке.

with MongoClient(URL,connect=False) as client:
 db = client.Tools
 tools = db.tools
 for (index, data) in enumerate(data_list):
 data[‘id’] = index # id added to existing data
 tools.insert_one(dub)

Заключение

Есть так много вещей, которые мы можем сделать с помощью Python и MongoDB. Это был один пример. Если вы хотите узнать или изучить какие-либо другие операции MongoDB, кроме вставки, дайте мне знать в Twitter или LinkedIn.

Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:

  • 👏 Хлопайте за историю и подписывайтесь на автора 👉
  • 📰 Смотрите больше контента в публикации Level Up Coding
  • 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"

🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу