Databázy sú jednou z najpopulárnejších technológií používaných na zber a organizáciu údajov, pretože umožňujú ľahký prístup, správu a aktualizáciu údajov. Tieto databázy však na vykonávanie týchto úloh vyžadujú systém riadenia. Na vykonávanie operácií v databáze sa väčšinou používa jazyk SQL. Avšak s rastom a zložitosťou vašej aplikácie je nesmierne ťažké mať predstavu o tom, čo presne ktorá operácia robí. To je miesto, kde na scénu prichádza technika Object Relational Mapping (ORM). To umožňuje dopytovanie a manipuláciu s údajmi pomocou objektovo orientovaného programovacieho jazyka podľa vášho výberu. ORM znižujú zložitosť vášho kódu a zvyšujú jeho zrozumiteľnosť, čo zase uľahčuje jeho aktualizáciu, údržbu a opätovné použitie.
V tomto článku sa pozrieme na Django ORM, ktorý je ORM založeným na Pythone a je preto jednou z najpopulárnejších technológií používaných v dnešnej dobe.
Čo je Django?
Predtým, ako sa pozrieme na ORM Djanga, pozrime sa najskôr, čo je vlastne táto pythonická technológia s názvom Django.
Django je bezplatný a otvorený webový rámec navrhnutý v Pythone, a preto má veľmi čistý a čistý dizajn a je jednoduchý, flexibilný, spoľahlivý a škálovateľný. Webovým vývojárom to veľmi uľahčuje, pretože poskytuje používateľom pripravené komponenty, ktoré im naopak bránia v písaní všetkého od začiatku, a vďaka tomu je ich práca rýchlejšia a znižuje sa režijné náklady na ich webových stránkach. Okrem toho je mimoriadne bezpečný a pomáha používateľom vyhnúť sa bezpečnostným problémom, ako sú útoky na nápravu používateľského rozhrania, injekcie SQL atď. Má tiež mimoriadne veľkú komunitu, ktorá je vždy prístupná prostredníctvom fór a je vždy pripravená ponúknuť svoju pomoc ostatným.
Poďme sa teraz konečne pozrieť na Django ORM a niektoré z jeho hlavných funkcií.
Prístup k ORM Django
Po inštalácii Django a nastavení jeho projektu sme zvyčajne vybavení nasledujúcimi počiatočnými súbormi:
mysite over here odkazuje na názov projektu, ktorý ste vytvorili. Všetky tieto súbory majú svoje vlastné použitie a je dôležité, aby ste vedeli, akú rolu každý súbor zohráva. Naše zameranie tu bude na správu.súbor py, ktorý pre nás bude ovládať veľa rôznych vecí, ako je napríklad nastavenie servera, migrácia, komunikácia s databázou, alebo prechod do režimu ORM.
Ak chcete otvoriť Django ORM, otvorte príkazový riadok z hlavného adresára vášho projektu Django a spustite nasledujúci príkaz:
$ python spravovať.py škrupinaTým sa nám otvorí interaktívny shell, ktorý nám umožní začať interagovať s databázou pomocou ORM.
Manipulácia s databázou pomocou dotazov v Django ORM
Pretože ORM nám umožňuje komunikovať s databázou, môžeme teraz písať rôzne dotazy na načítanie a manipuláciu s údajmi z databázy. Avšak predtým, ako začneme pracovať na databáze v shelli, musíme najskôr importovať všetky modely s ňou spojené. To je možné vykonať jednoduchým spustením príkazu v interaktívnom prostredí, ako je uvedené nižšie:
$ z appName.modely importovať modelNameV tejto časti appName odkazuje na názov vašej aplikácie, ktorú ste vytvorili, a teda na miesto, kde sú momentálne uložené vaše modely. ModelName odkazuje na názov modelu, ktorý chcete importovať a použiť. Tu si môžete nechať importovať viac modelov, ako je vidieť na príklade nižšie:
Teraz máte prístup k objektu modelu a môžete z neho načítať údaje. Napríklad, ak chceme zoznam všetkých príspevkov, môžeme ich jednoducho získať spustením nasledujúceho príkazu do nášho terminálu:
$ Príspevok.predmety.všetko ()Výsledkom vyššie uvedeného príkazu je:
V ORM môžeme robiť niekoľko ďalších druhov vecí, ako napríklad vytváranie nových údajov databázy, aktualizácia údajov a všetky ďalšie databázové príkazy, ktoré môžete.
Modelovanie databázy
Jednou z najlepších vecí, ktoré Django ORM poskytuje svojim používateľom, je schopnosť automaticky prepájať a vytvárať vzťahy medzi atribútmi objektu vášho modelu a zodpovedajúcimi poľami tabuľky. V databázach existujú hlavne tri typy vzťahov. to sú vzťahy One-to-One, One-to-Many alebo Many-to-One a Many-to-Many Relationship.
Vzťah jedna k jednej je, ako naznačuje názov, kde záznam jednej tabuľky zodpovedá jedinému záznamu inej tabuľky. V Django ORM to môžeme ľahko zariadiť nasledovne:
trieda Rodič (modely.Model):užívateľ = modely.OneToOneField (
Používateľ,
on_delete = modely.KASKÁDA,
primary_key = Pravda,
)
name_of_father = modely.CharField (max_length = 100)
name_of_mother = models.CharField (max_length = 100)
Tu môže mať každý používateľ iba osamelých biologických rodičov, a preto ide o vzájomný vzťah. Ak teraz odstránime ľubovoľného používateľa, ktorý pristupuje k tomuto modelu, odstráni sa tým aj model dvojkynd používateľa, pretože sú na sebe navzájom závislí.
Konverzia one-to-many alebo many-to-one sa vzťahuje na vzťah, v ktorom môže mať nadradený záznam niekoľko detských záznamov, môže však mať iba jedno alebo žiadne dieťa. V Django ORM môžeme tento vzťah ľahko nadviazať pomocou Cudzí kľúč lúka:
trieda Zákazník (modely.Model):meno = modely.CharField (max_length = 255)
trieda Vozidlo (modely.Model):
zákazník = modely.Cudzí kľúč(
Zákazník,
on_delete = modely.KASKÁDA
)
Ako je vidieť z vyššie uvedeného kódu, zákazník môže mať viac vozidiel.
Napokon vzťahy typu mnoho proti mnohým definujú vzťah, v ktorom sa môže vzájomne vzťahovať viac tabuliek. Môžeme to vytvoriť pomocou ManyToMany lúka. V príklade nižšie sme vytvorili dva modely, jeden pre používateľa a druhý pre jeho príspevky. Môže existovať aj viac používateľov, pretože každý môže mať viac príspevkov.
trieda Užívateľ (modely.Model):post = modely.ManyToManyField (príspevok, prázdne = pravda)
priatelia = modelky.ManyToManyField (nastavenia.AUTH_USER_MODEL, blank = True)
trieda Príspevok (modely.Model):
post = modely.Textové pole()
lajky = modely.ManyToManyField (nastavenia.AUTH_USER_MODEL, blank = True, related_name = 'user_likes')
Záver
Django ORM je mimoriadne výkonný nástroj, ktorý webovým vývojárom výrazne uľahčil prácu. Má množstvo funkcií, ako je manipulácia s databázovými modelmi, nadväzovanie vzťahov medzi modelmi a ešte oveľa viac. Stručne povedané, Django ORM je jednou z najlepších vecí, ktoré sú s Djangom dodávané, a je vysoko efektívny pri práci, ktorá mu je poskytovaná.