Pitón

Cómo usar bulk_create () en Django?

Cómo usar bulk_create () en Django?

El marco de Django se puede utilizar para crear una aplicación web con una base de datos escribiendo un script en modelos.py y puntos de vista.py archivos de la aplicación Django. Los datos se pueden insertar en las tablas de la base de datos utilizando el Panel de administración de Django o escribiendo un script en el puntos de vista.py expediente. El panel de administración de Django requiere un inicio de sesión para que un usuario autenticado acceda a las tablas de la base de datos. Se pueden insertar registros únicos o múltiples en las tablas de la base de datos escribiendo un script. bulk_create () El método es una de las formas de insertar varios registros en la tabla de la base de datos. Cómo bulk_create () El método que se utiliza para insertar los datos múltiples en una tabla de base de datos de Django se mostrará en este tutorial.

Requisitos previos:

Antes de practicar el guión de este tutorial, debe completar las siguientes tareas:

  1. Instale Django versión 3+ en Ubuntu 20+ (preferiblemente)
  2. Crea un proyecto de Django
  3. Ejecute el servidor Django para comprobar si el servidor funciona correctamente o no

Configura una aplicación Django:

Ejecute el siguiente comando para crear una aplicación Django llamada bookapp.

$ python3 administrar.py startapp bookapp

Ejecute el siguiente comando para crear el usuario para acceder a la base de datos de Django. Si ya creó uno, entonces no necesita ejecutar el comando.

$ python3 administrar.py crea superusuario

Agregue el nombre de la aplicación en el INSTALLED_APP parte de ajustes.py expediente.

INSTALLED_APPS = [
..
'bookapp'
]

Crea una carpeta llamada plantillas dentro de bookapp carpeta y establezca la ubicación de la plantilla de la aplicación en el PLANTILLAS parte de ajustes.py expediente.

PLANTILLAS = [

.. .
'DIRS': ['/ home / fahmida / django_pro / bookapp / templates'],
.. .
,
]

Cree un modelo para la tabla de la base de datos:

Abre el modelos.py archivo de la bookapp carpeta y agregue el siguiente script para definir la estructura de libros mesas. Libro La clase se define para crear una tabla llamada libros con título, autor, precio, y año_publicado campos. Según el guión, título y autor los campos almacenarán datos de caracteres y precio y año_publicado los campos almacenarán los datos enteros. Aquí el título el campo se define con el atributo único. Eso significa que el valor de la título El campo no aceptará datos duplicados.

modelos.py

# Módulo de importación de modelos
de django.modelos de importación de db
# Definir la clase de libros para la mesa de libros
Libro de clase (modelos.Modelo):
title = modelos.CharField (max_length = 100, único = verdadero)
autor = modelos.CharField (longitud_máxima = 100)
precio = modelos.IntegerField ()
año_publicado = modelos.IntegerField ()

Ejecutar el hacer migraciones comando para crear una nueva migración basada en los cambios realizados por los modelos.

$ python3 administrar.py makemigrations bookapp

Ejecutar el emigrar comando para ejecutar los comandos SQL y crear todas las tablas en la base de datos que están definidas en el modelos.py expediente.

$ python3 administrar.py migrar

Modificar el contenido del administración.py archivo con el siguiente contenido. Aquí, la clase Book de los modelos se registra utilizando el Registrarse() método para mostrar el libros tablas en el panel de administración de Django.

administración.py

# Importar módulo de administración
de django.administrador de importación de contribuciones
# Importar modelo de libro
de .libros de importación de modelos
# Registro modelo de libro
administración.sitio.registrarse (Libro)

Crea un archivo de plantilla llamado DisplayBookList.html dentro de bookapp / templates / carpeta con el siguiente script. Este script mostrará todos los datos de la tabla de libros en forma tabular. Aparte de eso, el bucle for se usa en el script para iterar los datos pasados ​​desde el puntos de vista.py expediente.

DisplayBookList.html



<br>Tutorial de Django bulk_create ()<br>



Lista de libros de Python







% para el libro en object_list%



% endfor%
IDENTIFICACIÓNNombreAutorAño de publicaciónPrecio
libro.identificación libro.título libro.autorlibro.año_publicado$ libro.precio



Modificar el contenido del puntos de vista.py archivo con el siguiente script. Los nombres de modelo y plantilla se definen en el BulkInsert clase. get_queryset () El método de la clase se define en el script para devolver todos los registros de la tabla de libros. Por otro lado, Libro.objetos.todas() El método se utiliza para devolver todos los registros de la tabla de libros. existe () El método se utiliza en el script para comprobar el libros la mesa está vacía o no. Si este método regresa Falso luego se insertarán cinco registros en la tabla de libros usando el bulk_create () método.

puntos de vista.py

de django.importación de atajos render
# Importar módulo ListView
de django.puntos de vista.ListView de importación genérico
# Importar modelo de libro
de .libros de importación de modelos
# Definir clase para insertar múltiples datos
clase BulkInsert (ListView):
# Definir modelo
modelo = Libro
# Definir plantilla
template_name = 'DisplayBookList.html '
# Leer todos los registros existentes de la tabla de libros
queryset = Libro.objetos.todas()
# Comprueba que la mesa de libros está vacía o no
si queryset.existe () == Falso:
# Inserte 5 registros en la tabla de libros a la vez
Libro.objetos.bulk_create ([
Libro (título = 'Curso intensivo de Python, 2.a edición', autor = 'Eric Matthes', precio = 15, año_publicado = 2019),
Libro (título = 'Automatizar las cosas aburridas con Python, 2da edición', autor = 'Al Sweigart', precio = 30,
año_publicado = 2019),
Libro (título = 'Aprendiendo Python', autor = 'Mark Lutz', precio = 15, año_publicado = 2019),
Libro (título = 'Head First Python', autor = 'Paul Barry', precio = 45, año_publicado = 2016),
Libro (título = 'Un byte de Python', autor = 'Swaroop C H', precio = 15, año_publicado = 2013),
])
# Devuelve todos los registros de la tabla de libros
def get_queryset (yo):
# Establecer el conjunto de consultas predeterminado
devolver libro.objetos.todas()

Modificar el contenido del urls.py archivo con el siguiente script. En el guion, el 'admin /' La ruta se define para abrir el Panel de administración de Django y la ruta 'libros /' se define para llamar al BulkInsert.as_view () método que insertará cinco registros en la tabla de libros y devolverá los registros al archivo de plantilla.

urls.py

# Importar módulo de administración
de django.administrador de importación de contribuciones
# Importar ruta e incluir módulo
de django.ruta de importación de URL
desde las vistas de importación de bookapp
urlpatterns = [
# Definir la ruta para el administrador
ruta ('admin /', admin.sitio.urls),
ruta ('libros /', vistas.BulkInsert.as_view ()),
]

Abra el Panel de administración de Django para verificar si los datos se insertaron correctamente o no usando el bulk_create () función.

Los registros insertados del libros La tabla se mostrará en el navegador después de ejecutar la siguiente URL.

http: // localhost: 8000 / libros /

Conclusión:

Se pueden insertar varios registros en la tabla de la base de datos de Django de diferentes maneras usando el bulk_create (). En este tutorial se mostró una forma sencilla de insertar varios registros en la tabla de la base de datos utilizando este método para ayudar a los usuarios de Django a comprender la lógica detrás del proceso.

Batalla por Wesnoth 1.13.6 Desarrollo liberado
Batalla por Wesnoth 1.13.6 lanzado el mes pasado, es el sexto lanzamiento de desarrollo en el 1.13.x y ofrece una serie de mejoras, sobre todo en la i...
Cómo instalar League Of Legends en Ubuntu 14.04
Si eres fanático de League of Legends, esta es una oportunidad para que pruebes League of Legends. Tenga en cuenta que LOL es compatible con PlayOnLin...
Instale el último juego de estrategia de OpenRA en Ubuntu Linux
OpenRA es un motor de juego de estrategia en tiempo real libre / gratuito que recrea los primeros juegos de Westwood como el clásico Command & Conquer...