Por usando API remota y operaciones en múltiples entidades. Voy a mostrar un ejemplo de NDB usando pitón, donde nuestro Test.csv contiene los siguientes valores separados con punto y coma:
1;2;3;4
5;6;7;8
En primer lugar tenemos que importar módulos:
import csv
from TestData import TestData
from google.appengine.ext import ndb
from google.appengine.ext.remote_api import remote_api_stub
entonces tenemos que crear remota de código auxiliar api:
remote_api_stub.ConfigureRemoteApi(None, '/_ah/remote_api', auth_func, 'your-app-id.appspot.com')
Para obtener más información sobre el uso de API remota de echar un vistazo a this answer.
Luego viene el código principal, que básicamente hace las siguientes cosas:
- abre el archivo Test.csv.
- Establece el delimitador. Estamos usando punto y coma.
- Luego tiene dos opciones diferentes para crear una lista de entidades:
- Uso de las funciones de reducción de mapa.
- Uso de la lista de comprensión.
- Al final, el lote pone toda la lista de entidades.
Código principal:
# 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)
La operación put_multi también se encarga de asegurarse a lote número apropiado de entidades en una sola solicitud HTTP POST.
Tenga una mirada en esta documentación para obtener más información:
Con un poco de trabajo extra, incluso se puede cargar datos directos desde una base de datos SQL, o cualquier otra fuente de datos. –