Python

Bulk_create() gebruiken in Django?

Bulk_create() gebruiken in Django?

Het Django-framework kan worden gebruikt om een ​​webtoepassing met een database te maken door een script in te schrijven modellen.py en keer bekeken.py bestanden van de Django-app. De gegevens kunnen in de databasetabellen worden ingevoegd met behulp van het Django-beheerdashboard of door een script te schrijven in de keer bekeken.py het dossier. Django Administration Dashboard vereist een login voor een geverifieerde gebruiker om toegang te krijgen tot de tabellen van de database. Enkele of meerdere records kunnen in de databasetabellen worden ingevoegd door een script te schrijven. bulk_create() methode is een van de manieren om meerdere records in de databasetabel in te voegen. Hoe de bulk_create() methode wordt gebruikt om de meerdere gegevens in een Django-databasetabel in te voegen, wordt in deze zelfstudie getoond.

Vereisten:

Voordat u het script van deze zelfstudie oefent, moet u de volgende taken uitvoeren:

  1. Installeer de Django versie 3+ op Ubuntu 20+ (bij voorkeur)
  2. Een Django-project maken
  3. Voer de Django-server uit om te controleren of de server goed werkt of niet

Een Django-app instellen:

Voer de volgende opdracht uit om een ​​Django-app met de naam te maken boekenapp.

$ python3 beheren.py startapp boekapp

Voer de volgende opdracht uit om de gebruiker aan te maken voor toegang tot de Django-database:. Als je er al een hebt gemaakt, hoef je de opdracht niet uit te voeren.

$ python3 beheren.py createsuperuser

Voeg de app-naam toe aan de INSTALLED_APP deel van de instellingen.py het dossier.

INSTALLED_APPS = [

'boekapp'
]

Maak een map met de naam Sjablonen binnen in de boekenapp map en stel de locatie van de app voor de sjabloon in de SJABLONEN deel van de instellingen.py het dossier.

SJABLONEN = [

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

Maak een model voor de databasetabel:

Open de modellen.py bestand van de boekenapp map en voeg het volgende script toe om de structuur van te definiëren boeken tafels. Boek class is gedefinieerd om een ​​tabel te maken met de naam books with titel, auteur, prijs, en gepubliceerd_jaar velden. Volgens het script, titel en schrijver velden worden opgeslagen karaktergegevens, en prijs en gepubliceerd_jaar velden zullen de integer-gegevens opslaan. Hier de titel veld is gedefinieerd met het unieke attribuut. Dat betekent dat de waarde van de titel veld accepteert geen dubbele gegevens.

modellen.py

# Importeer modellen module
van django.db-importmodellen
# Definieer de boekklasse voor de boekentafel
klasse Boek (modellen).Model):
titel = modellen.CharField(max_length=100, unique=true)
auteur = modellen.CharField(max_length=100)
prijs = modellen.IntegerVeld()
gepubliceerd_jaar = modellen.IntegerVeld()

Voer de ... uit migraties opdracht om een ​​nieuwe migratie te maken op basis van de wijzigingen die door de modellen zijn aangebracht.

$ python3 beheren.py makemigraties boekapp

Voer de ... uit migreren commando om de SQL-commando's uit te voeren en alle tabellen in de database te maken die zijn gedefinieerd in de modellen.py het dossier.

$ python3 beheren.py migreren

Wijzig de inhoud van de beheerder.py bestand met de volgende inhoud:. Hier wordt de boekklasse van de modellen geregistreerd met behulp van de registreren() methode om de . weer te geven boeken tabellen in het Django-beheerdashboard.

beheerder.py

# Beheermodule importeren
van django.bijdrage import beheerder
# Boekmodel importeren
van .modellen importeren Boek
# Registreer Boek model
beheerder.website.inschrijven (Boek)

Maak een sjabloonbestand met de naam WeergevenBoekenLijst.html binnen in de boekapp/sjablonen/ map met het volgende script. Dit script toont alle gegevens van de boekentabel in tabelvorm. Anders dan dat, wordt de for-lus in het script gebruikt om de gegevens te herhalen die zijn doorgegeven vanuit de keer bekeken.py het dossier.

WeergevenBoekenLijst.html



<br>Django bulk_create() Zelfstudie<br>



Python-boekenlijst







% voor boek in object_list %



% eindvoor %
ID kaartNaamSchrijverJaar van publicatiePrijs
boek.ID kaart boek.titel boek.schrijverboek.gepubliceerd_jaar$boek.prijs



Wijzig de inhoud van de keer bekeken.py bestand met het volgende script. De model- en sjabloonnamen worden gedefinieerd in de Bulkinsert klasse. get_queryset() methode van de klasse is gedefinieerd in het script om alle records van de boekentabel te retourneren. Aan de andere kant, Boek.voorwerpen.alle() methode wordt gebruikt om alle records van de boekentabel te retourneren. bestaat() methode wordt in het script gebruikt om de boeken tafel is leeg of niet. Als deze methode terugkeert niet waar dan worden vijf records in de boekentabel ingevoegd met behulp van de bulk_create() methode.

keer bekeken.py

van django.sneltoetsen import render
# Lijstweergave-module importeren
van django.keer bekeken.generieke import ListView
# Boekmodel importeren
van .modellen importeren Boek
# Definieer klasse voor het invoegen van meerdere gegevens
klasse BulkInsert (ListView):
# Definieer model
model = Boek
# Definieer sjabloon
template_name = 'DisplayBookList.html'
# Lees alle bestaande records van boekentafel
queryset = Boek.voorwerpen.alle()
# Controleer of de boekentafel leeg is of niet
als queryset.bestaat() == Onwaar:
# Voeg 5 records tegelijk in de boekentabel in
Boek.voorwerpen.bulk_create([
Boek(title='Python Crash Course, 2nd Edition', author='Eric Matthes', price=15, publishing_year=2019),
Book(title='Automatiseer de saaie dingen met Python, 2e editie', author='Al Sweigart', price=30,
gepubliceerd_jaar=2019),
Boek(title='Learning Python', author='Mark Lutz', price=15, publishing_year=2019),
Boek(titel='Head First Python', auteur='Paul Barry', prijs=45, gepubliceerd_jaar=2016),
Boek (titel='A Byte of Python', auteur='Swaroop C H', prijs=15, gepubliceerd_jaar=2013),
])
# Retourneer alle records van de boekentafel
def get_queryset(zelf):
# Stel de standaardqueryset in
terug Boeken.voorwerpen.alle()

Wijzig de inhoud van de URL's.py bestand met het volgende script. In het script, de 'admin/' pad is gedefinieerd om het Django-beheerdashboard te openen en het pad 'books/' is gedefinieerd om de Bulkinsert.as_view() methode die vijf records in de boekentabel invoegt en de records terugstuurt naar het sjabloonbestand.

URL's.py

# Beheermodule importeren
van django.bijdrage import beheerder
# Pad importeren en module opnemen
van django.URL-importpad
van bookapp importweergaven
urlpatronen = [
# Definieer het pad voor admin
pad('admin/', beheerder.website.URL's),
pad('books/', views.Bulkinsert.as_view()),
]

Open het Django-beheerdashboard om te controleren of de gegevens correct zijn ingevoerd of niet met behulp van de bulk_create() functie.

De ingevoegde records van de boeken tabel wordt weergegeven in de browser na het uitvoeren van de volgende URL:.

http://localhost:8000/books/

Conclusie:

Meerdere records kunnen op verschillende manieren in de Django-databasetabel worden ingevoegd met behulp van de bulk_create(). Een eenvoudige manier om met deze methode meerdere records in de databasetabel in te voegen, werd in deze zelfstudie getoond om Django-gebruikers te helpen de logica achter het proces te begrijpen.

Installeer de nieuwste OpenRA Strategy Game op Ubuntu Linux
OpenRA is een Libre/Free Real Time Strategy-game-engine die de vroege Westwood-games nabootst, zoals de klassieke Command & Conquer: Red Alert. Gedist...
Installeer de nieuwste Dolphin Emulator voor Gamecube & Wii op Linux
Met de Dolphin Emulator kun je de door jou gekozen Gamecube- en Wii-spellen spelen op Linux Personal Computers (pc). Omdat het een vrij beschikbare e...
Hoe de GameConqueror Cheat Engine in Linux te gebruiken
Het artikel bevat een handleiding over het gebruik van de GameConqueror cheat-engine in Linux. Veel gebruikers die games op Windows spelen, gebruiken ...