Colección de citas famosas - Slogan de motivación - Introducción a cómo Django usa múltiples métodos de bases de datos

Introducción a cómo Django usa múltiples métodos de bases de datos

Algunos proyectos pueden implicar el uso de múltiples bases de datos y el enfoque es simple. A continuación, a través de este artículo, presentaré cómo Django usa múltiples bases de datos para su referencia.

Algunos proyectos pueden implicar el uso de múltiples bases de datos y el método es simple.

1. Configure la base de datos en la configuración.

Por ejemplo, para utilizar dos bases de datos:

De esta manera se pueden identificar dos bases de datos, una con alias como predeterminada y otra con alias de usuario. El alias de la base de datos se puede determinar arbitrariamente.

El alias predeterminado es especial. Cuando un modelo no tiene una selección especial en el enrutamiento, se utiliza la base de datos predeterminada de forma predeterminada.

Por supuesto, el valor predeterminado también se puede establecer en nulo:

De esta manera, debido a que no existe una base de datos predeterminada, es necesario realizar el enrutamiento de la base de datos para todos los modelos, incluido el modelo de bibliotecas de terceros utilizado.

2. Defina app_label para el modelo que requiere selección de base de datos.

3. Escriba un enrutador de base de datos

El enrutador de base de datos se utiliza para determinar qué base de datos utiliza el modelo. Define principalmente los siguientes cuatro métodos:

db_for_read (. modelo, * * Consejo)

Especifique la base de datos desde la que debe leer el modelo.

Escribir base de datos (modelo, * *sugerencia)

Especifica la base de datos en la que se debe escribir el modelo.

permitir _ relación (obj 1, obj2, * * solicitud)

Determinar si se puede generar una relación entre obj1 y obj2, utilizada principalmente para claves externas y de muchos a muchos. operaciones.

allow_migrate(db, app_label, model_name=None, **hint)

Determina si las operaciones de migración se pueden ejecutar en la base de datos con alias de db.

Ejemplo completo:

Configuración de la base de datos:

Si desea lograr el siguiente efecto:

Modelo con app_label auth en auth_db Leer y se escribe en el primario, el resto del modelo se escribe en el primario y la lectura se realiza aleatoriamente en réplica1 y réplica2.

Autenticación:

De esta manera, el modelo con app_label auth se lee y escribe en auth_db, y se permiten asociaciones. Las migraciones solo se pueden ejecutar en la base de datos auth_db.

El resto:

De esta forma, las lecturas se realizan aleatoriamente en réplica1 y réplica2, y las escrituras utilizan la primaria.

Por último, en Configuración establece:

Adelante.

Al migrar:

De forma predeterminada, la operación de migración se realiza en la base de datos predeterminada. Para operar en otras bases de datos, utilice la opción -database, seguida del alias de la base de datos.

En consecuencia, los comandos dbshell, dumpdata y loaddata tienen la opción -database.

También puedes seleccionar una ruta manualmente:

Consultar:

Guardar:

Mover:

Arriba El código puede causar problemas. Cuando P se guarda por primera vez en la primera base de datos, se genera una clave primaria de forma predeterminada, por lo que cuando se guarda en la segunda base de datos, P ya tiene una clave primaria. Si no se utiliza esta clave primaria no causará problemas, pero si se usó antes sobrescribirá los datos originales.

Hay dos soluciones;

1. Borrar la clave principal antes de guardar:

2. Usar inserción forzada

Eliminar:

p>

¿De qué base de datos obtuviste este objeto y dónde se eliminó?

Si desea transferir objetos de la base de datos de usuarios anterior a la nueva base de datos de usuarios: