Используя удаленный API и операции с несколькими объектами. Я покажу пример для NDB с использованием python, где наш Test.csv содержит следующие значения, разделенные точкой с запятой:
1;2;3;4
5;6;7;8
Сначала нам нужно импортировать модули:
import csv
from TestData import TestData
from google.appengine.ext import ndb
from google.appengine.ext.remote_api import remote_api_stub
Затем нам нужно создать удаленную заглушку API:
remote_api_stub.ConfigureRemoteApi(None, '/_ah/remote_api', auth_func, 'your-app-id.appspot.com')
Для получения дополнительной информации об использовании удаленного API смотрите этот ответ .
Затем идет основной код, который в основном выполняет следующие действия:
- Открывает файл Test.csv.
- Устанавливает разделитель. Мы используем точку с запятой.
- Тогда у вас есть две разные опции для создания списка сущностей:
- Использование функций уменьшения карты.
- Использование списка понимания.
- В итоге вы пакетно ставите весь список сущностей.
Основной код:
# Open csv file for reading.
with open('Test.csv', 'rb') as file:
# Set delimiter.
reader = csv.reader(file, delimiter=';')
# Reduce 2D list into 1D list and then map every element into entity.
test_data_list = map(lambda number: TestData(number=int(number)),
reduce(lambda list, row: list+row, reader)
)
# Or you can use list comprehension.
test_data_list = [TestData(number=int(number)) for row in reader for number in row]
# Batch put whole list into HRD.
ndb.put_multi(test_data_list)
Операция put_multi также заботится о том, чтобы обеспечить пакетирование соответствующего количества объектов в одном HTTP-запросе POST.
Посмотрите эту документацию для получения дополнительной информации: