[sincronización automática de la base de datos django] Django sincroniza la base de datos después de cambiar las aplicaciones

Django elimina la tabla de la base de datos y vuelve a sincronizar

Original 3 de julio de 2017 10:25:53

Etiqueta:

pitón/

django

1811

Debido a las necesidades del proyecto, recientemente se ha utilizado un marco de back-end basado en el lenguaje Python Django para desarrollar aplicaciones web. Hay que decir que Django hereda la simplicidad de Python, y usarlo para desarrollar aplicaciones web es simple y refrescante. A diferencia del marco SSH anterior, cada marco debe configurarse por separado, y los diversos marcos deben ensamblarse a través de la configuración. Django integra SSH Las funciones de los tres marcos solo necesitan configurar este marco, se puede completar todo el proceso de desarrollo de back-end y el proceso de configuración es fácil de aprender, lo que reduce en gran medida la complejidad de los programadores y puede centrarse más en la escritura Produzca un buen código, no enredado en el uso de herramientas.

Sin más preámbulos, permítanme hablar sobre los problemas y las soluciones que he encontrado.

Todos sabemos que Django proporciona la función ORM, puede crear directamente tablas de bases de datos y agregar, eliminar, modificar y verificar a través de las clases en el código de operación. Sin embargo, en el proceso de desarrollo, debido al rediseño de la tabla de la base de datos, debe eliminar la tabla original y volver a sincronizar la tabla a través de la función ORM de Django.

Los comandos de sincronización son los siguientes:

[plano] viewplaincopy

python? manage.py? makemigrations

[plano] viewplaincopy

python? manage.py? migrate

Pero después de ingresar el comando recibí un error:

El mensaje dice que no hay un valor predeterminado para el nuevo campo que agregué (mi modificación a la tabla de la base de datos es agregar un campo), luego fui a Baidu y encontré la respuesta en stackoverflow, solo agregué un valor predeterminado después del campo. Pero obviamente esta respuesta no encontró la causa real del problema que encontré, porque el primer comando se ejecutó con éxito de esta manera, pero el error se informó directamente cuando se ejecutó el segundo comando. Luego fui a Baidu nuevamente. Alguien sugirió echar un vistazo al archivo inicial generado automáticamente por el marco. Este archivo está en el directorio de migraciones bajo la aplicación actual. Después de abrir, se encuentra que el contenido del archivo corresponde a la tabla original, es decir, no se ha actualizado. El problema puede estar aquí Demasiado Así que eliminé este archivo y lo regenere como se sugiere.

Después de eliminar el archivo, vuelva a ejecutar el comando. Esta vez, se generó un nuevo archivo inicial y el contenido se actualizó, pero aún hubo un problema al ejecutar el segundo comando. Al mirar la base de datos, estaba vacía y no se generó una nueva tabla. Choque

Luego fui a Baidu nuevamente para encontrar preguntas relacionadas y vi otro comando:

[plano] viewplaincopy

python? manage.py? sqlmigrate? your_app_name? 0001

Reemplace your_app_name con el nombre de su propia aplicación para ver la instrucción SQL creada por el marco, así que vi la instrucción SQL. Ejecuté directamente el comando sql en la base de datos para crear manualmente la tabla, y luego inicié la aplicación, puede comenzar normalmente y el problema está resuelto.

Aunque este método es un poco complicado, parece que no hay una explicación para el quid del problema, pero afortunadamente, el problema se resuelve de manera muy práctica.

Supongo que te gusta

Origin www.cnblogs.com/sqlserver-mysql/p/12712871.html
Recomendado
Clasificación