Как разработчики, мы сталкиваемся со многими случаями, когда мы импортируем данные из одного источника и хотим загрузить эти данные в другой источник. Это была та же самая ситуация, с которой я столкнулся. Я экспортировал данные из 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 и найдите прекрасную работу