Python

Wat is Django ORM?

Wat is Django ORM?
In de wereld van vandaag is technologie een integraal onderdeel van ons leven geworden omdat alles om ons heen is gedigitaliseerd. Dit geldt ook in het bedrijfsleven. Bedrijven die niet de juiste infrastructuur gebruiken en niet in staat zijn om de juiste technologische architectuur uit te rusten, raken achterop bij hun concurrenten. Dit komt vooral omdat tegenwoordig de hoeveelheid gegevens waarop bedrijven en organisaties vertrouwen voor hun analyse exponentieel is gegroeid en als gevolg daarvan, om deze op een efficiënte manier te kunnen verwerken en interpreteren, moeten ze de juiste set van tools en infrastructuur om ze te ondersteunen.

Databases zijn een van de meest populaire technologieën die worden gebruikt voor het verzamelen en ordenen van gegevens, omdat de gegevens hierdoor gemakkelijk toegankelijk, beheersbaar en bijgewerkt kunnen worden. Deze databases hebben echter een beheersysteem nodig om deze taken uit te voeren. Meestal wordt de taal SQL gebruikt om bewerkingen in een database uit te voeren, maar naarmate uw toepassing groeit en complexer wordt, wordt het uiterst moeilijk om een ​​idee te hebben van wat elke bewerking precies doet. Dit is waar de techniek Object Relational Mapping (ORM) in beeld komt. Dit maakt het opvragen en manipuleren van de gegevens mogelijk met behulp van een objectgeoriënteerde programmeertaal naar keuze. ORM's verminderen de complexiteit van uw code en maken deze begrijpelijker, wat het op zijn beurt gemakkelijker maakt om de code bij te werken, te onderhouden en opnieuw te gebruiken.

In dit artikel zullen we de Django ORM bekijken, een op Python gebaseerde ORM en daarom een ​​van de meest populaire technologieën die tegenwoordig wordt gebruikt.

Wat is Django?

Voordat we verder gaan met het kijken naar de ORM van Django, laten we eerst kijken wat deze Pythonic-technologie genaamd Django eigenlijk is.

Django is een gratis en open-source webframework ontworpen in Python en heeft daarom een ​​zeer schoon en netjes ontwerp en is daarnaast eenvoudig, flexibel, betrouwbaar en schaalbaar. Het maakt het voor webontwikkelaars extreem gemakkelijk, omdat het gebruikers kant-en-klare componenten biedt die op hun beurt voorkomen dat ze alles helemaal opnieuw schrijven, en als gevolg daarvan hun werk sneller maken en de overhead op hun website verminderen. Daarnaast is het extreem veilig en helpt het gebruikers beveiligingsproblemen te voorkomen, zoals UI-redress-aanvallen, SQL-injecties, enzovoort. Het heeft ook een extreem grote gemeenschap die altijd toegankelijk is via forums en altijd klaar staat om anderen te helpen.

Laten we nu eindelijk eens kijken naar de Django ORM en enkele van zijn belangrijkste kenmerken.

Toegang tot de Django ORM

Na het installeren van Django en het opzetten van het project, krijgen we meestal de volgende initiële bestanden:

mijnsite hier verwijst naar de naam van het project dat je hebt gemaakt. Al deze bestanden hebben hun eigen gebruik en het is belangrijk dat men weet welke rol elk bestand speelt. Onze focus ligt hier op het managen.py-bestand dat veel verschillende dingen voor ons gaat regelen, zoals het opzetten van een server, het maken van migraties, communiceren met een database en het openen van de ORM-modus.

Om de Django ORM te openen, opent u een opdrachtregel vanuit de hoofdmap van uw Django-project en voert u de volgende opdracht uit:

$ python beheren.py shell

Dit zal een interactieve shell voor ons openen waarmee we kunnen beginnen met de interactie met de database met behulp van de ORM.

Database manipuleren met behulp van query's in Django ORM

Omdat de ORM ons in staat stelt om met de database te communiceren, kunnen we nu verschillende query's schrijven om de gegevens uit de database op te halen en te manipuleren. Voordat we echter aan de database in de shell kunnen werken, moeten we eerst alle bijbehorende modellen importeren. Dit kan gedaan worden door simpelweg een commando uit te voeren in de interactieve shell, zoals hieronder getoond:

$ van appnaam.modellen importeren modelnaam

Hier verwijst de appName naar de naam van je app die je hebt gemaakt en dus waar je modellen momenteel zijn opgeslagen. De modelName verwijst naar de naam van het model dat u wilt importeren en gebruiken. U kunt hier meerdere modellen laten importeren, zoals te zien is in het onderstaande voorbeeld:

Nu hebt u toegang tot het modelobject en kunt u er gegevens uit lezen. Als we bijvoorbeeld de lijst met alle berichten willen, kunnen we ze eenvoudig verkrijgen door de volgende opdracht in onze terminal uit te voeren:

$ Posten.voorwerpen.alle()

Het volgende is het resultaat van de bovenstaande opdracht:

We kunnen verschillende andere dingen doen in de ORM, zoals het maken van nieuwe databasegegevens, het bijwerken van de gegevens en alle andere databaseopdrachten die u kunt.

Databasemodellering

Een van de beste dingen die de Django ORM zijn gebruikers biedt, is de mogelijkheid om automatisch verbanden te leggen tussen de attributen van het object van uw model en de bijbehorende tabelvelden. In databases bestaan ​​hoofdzakelijk drie soorten relaties relationships. dit zijn de één-op-één-relatie, de één-op-veel- of veel-op-één-relatie en de veel-op-veel-relaties.

Een één-op-één-relatie is, zoals de naam al doet vermoeden, waarbij het record van de ene tabel overeenkomt met een enkel record van een andere tabel. In Django ORM kunnen we dit eenvoudig als volgt vaststellen:

klasse Ouder(modellen).Model):
gebruiker = modellen.EénNaarEenVeld(
Gebruiker,
on_delete=modellen.CASCADE,
primary_key=Waar,
)
naam_van_vader = modellen.CharField(max_length=100)
name_of_mother = modellen.CharField(max_length=100)

Hier kan elke gebruiker alleen biologische ouders hebben, en daarom is het een één-op-één relatie. Als we nu een gebruiker verwijderen die toegang heeft tot dit model, wordt ook het model van de 2 . verwijderdnd gebruiker omdat ze van elkaar afhankelijk zijn.

Een één-op-veel of veel-op-één verwijst naar een relatie waarbij een bovenliggende record meerdere onderliggende records kan hebben, maar het kan ook slechts één of geen onderliggende records hebben. In Django ORM kunnen we deze relatie eenvoudig vaststellen met behulp van de Vreemde sleutel veld:

klasse Klant (modellen).Model):
naam = modellen.CharField(max_length=255)
klasse Voertuig (modellen).Model):
klant = modellen.Vreemde sleutel(
Klant,
on_delete=modellen.CASCADE
)

Zoals te zien is in de bovenstaande code, kan een klant meerdere voertuigen hebben.

Ten slotte definiëren veel-op-veel-relaties een relatie waarin meerdere tabellen aan elkaar kunnen worden gerelateerd. We kunnen dit maken met behulp van de Veel te veel veld-. In het onderstaande voorbeeld hebben we twee modellen gemaakt, een voor de gebruiker en een voor hun berichten. Er kunnen ook meerdere gebruikers zijn, aangezien elke gebruiker meerdere berichten kan hebben.

klasse Gebruiker (modellen).Model):
post = modellen.ManyToManyField(Post, blank=True)
vrienden = modellen.ManyToManyField(instellingen.AUTH_USER_MODEL, blanco = True)
klasse Post (modellen).Model):
post = modellen.TekstVeld()
houdt van = modellen.ManyToManyField(instellingen.AUTH_USER_MODEL, blank=True, related_name='user_likes')

Conclusie

De Django ORM is een extreem krachtige tool en heeft het werk van webontwikkelaars zoveel gemakkelijker gemaakt. Het heeft een verscheidenheid aan functies, zoals het manipuleren van databasemodellen, het leggen van een relatie tussen de modellen en nog veel meer. In een notendop, de Django ORM is een van de beste dingen die bij Django worden geleverd en is zeer effectief in het werk dat eraan wordt geleverd.

Hoe FPS te verhogen in Linux?
FPS staat voor Beelden per seconde. De taak van FPS is om de framesnelheid te meten bij het afspelen van video's of speluitvoeringen. In eenvoudige wo...
Top Oculus App Lab-games
Als je eigenaar bent van een Oculus-headset, moet je op de hoogte zijn van sideloading. Sideloading is het proces van het installeren van niet-winkeli...
Top 10 spellen om te spelen op Ubuntu
Het Windows-platform is een van de dominante platforms voor gaming geweest vanwege het enorme percentage games dat tegenwoordig wordt ontwikkeld om Wi...