La respuesta corta es: No lo maneja. No puede cambiar el nombre de una entidad, puede cambiar una propiedad, pero deberá actualizar los datos manualmente.
Las definiciones de su modelo son solo la "vista" de sus aplicaciones sobre cómo interpretar las entidades almacenadas en el almacén de datos. Si tuviera una definición como:
class MyEntity(db.Model):
text = db.TextProperty()
Y dirigir mi solicitud de un tiempo de llenar la propiedad text
de mis enties, a continuación, más tarde llamado la columna a:
class MyEntity(db.Model):
description = db.TextProperty()
todos mis datos existentes permanecerían exactamente como estaba (muchas entidades en el almacén de datos con propiedades text
pobladas. Solo cuando traté de cargar las entidades en las instancias de mi modelo, solo las veía como entidades vacías (sin description
establecido, y sin forma de acceder a los datos text
) que existe actualmente). Guardar (poner) mi entidad de nuevo en el el almacén de datos sobrescribiría los datos antiguos y se perderían los datos.
Si realiza cambios en su esquema como este, o más probablemente solo cambie un tipo de campo. Depende de usted procesar previamente sus datos para manejar los cambios. La capa de modelo generará errores si intenta cargar una entidad que ya no se ajusta a las definiciones de su modelo.
Para ayudar en esta tarea manual de actualización de los datos de las armas preferidas son:
- remote_api/remote_api_shell.py
- El mapreduce biblioteca (especialmente el "asignador" parte)
Con la configuración de remote_api [1] puede abrir una sesión de Python interactiva a sus datos en vivo y ejecutar scripts localmente (principalmente) como si estuvieran ejecutándose directamente en los servidores de producción. Encuentro que esta es la forma más rápida y fácil de arreglar/limpiar datos para tareas pequeñas y únicas.
La aplicación mapeador [2] podría emplearse si tiene una tarea mucho más grande, digamos alterando millones de entidades y desea aprovechar la mayor cantidad de esto en paralelo como sea posible.
Buena respuesta, pero una mención de Mapreduce sería una gran respuesta. –
¡Gracias, Chris! @Nick, gracias por la mención de Mapreduce. – stringo0