Vytvořte datový model v baňce

Obsah
Naše aplikace jsou mnohem víc než jen jednoduché stránky, proto musíme vytvořit způsoby, jak ukládat data v nějakém systému vytrvalosti. Databáze v sázce je, že aby bylo možné stanovit způsob, jakým nám databáze pomůže, je nutné vytvořit modely.
Model nám dává strukturu, ve které bude fungovat největší logika naší aplikace, zde dáváme smysl různým entitám, s nimiž musíme disponovat, abychom mohli provádět své akce.
Baňka máte možnost používat různé typy Databáze pouze pomocí ORM SQLAlchemy.
PožadavkyPotřebujeme funkční instalaci Baňka, a příslušná oprávnění, aby bylo možné instalovat více komponent prostřednictvím pip. Pokud máme možnost pracovat Virtualenv je mnohem více doporučováno, nicméně není nutné. Pokud chceme extrapolovat příklady tutoriálů, budeme je potřebovat Databáze Co MySQL v případě, že chceme přenést funkčnost do mnohem reálnějšího prostředí, protože ve cvičeních budeme pracovat sqlite jako opatření zjednodušení a být praktičtější.
První věc, kterou uděláme, je instalace SQLAlchemy, tento krok je velmi jednoduchý, musíme pouze spustit následující příkaz v konzole povolené ke spuštění pip:
 pip install flask-sqlalchemy
Pokud vše proběhlo správně, na konci dostaneme zprávu o úspěchu:

Nyní pojďme SQLAlchemy do práce, za tímto účelem vytvoříme malou aplikaci, kde uvidíme, jak můžeme navázat spojení s databázovým strojem. V tomto případě bude naše aplikace volána flasko a v něm musíme mít následující strukturu.
1- Soubor s názvem run.py který bude v kořenovém adresáři aplikace, tento soubor provede základní inicializaci celého našeho prostředí.
2- Složka s názvem flasko a uvnitř tohoto souboru s názvem __init__.py, kde budeme inicializovat použití baňka a ze SQLAlchemy přímo.
Podívejme se na následujícím obrázku, jak tato struktura vypadá v projektu:

Jakmile budeme vědět, co bychom měli mít, budeme mít obsah pro naše počáteční soubory. V souboru run.py musíme mít následující:
 z flasko import appapp.run (debug = True)
Pak do našeho souboru __init__.py umístíme tento kód:
 z baňky import Flask z flask.ext.sqlalchemy import SQLAlchemyapp = Flask (__ name __) app.config ['SQLALCHEMY_DATABASE_URI'] = 'sqlite: //flaskodb.db'db = SQLAlchemy (aplikace)
Tento poslední kód je velmi snadné vysvětlit, pouze importujeme Baňka, poté importujeme SQLAlchemy, vytvoříme naši aplikaci pro práci s frameworkem a poté navážeme spojení s naší Databáze v tomto případě sqlite, kde se bude jmenovat flaskdb.db a bude ve stejném adresáři jako naše aplikace. Nakonec přiřadíme předmět SQLAlchemy na proměnnou s názvem db se kterým budeme později pracovat.
Pokud spustíme naši aplikaci nyní, měla by se spustit bez chyb, jediné je, že nebudeme mít výsledek, protože aplikace je stále prázdná.
Protože nyní máme základní konfiguraci naší aplikace, musíme položit základy pro vytvoření našeho modelu, proto budeme muset v naší složce vytvořit složku, která obsahuje soubor __init__.py a právě tam vygenerujeme potřebný obsah.
Podívejme se, jak je naše struktura složek upravena:

Jak vidíme uvnitř naší nové složky produktu, vygenerovali jsme 3 soubory, soubor __init__.py který musí být prázdný, soubor models.py a další views.py. S touto strukturou upravíme náš __init__.py z kořene naší aplikace, kde je důležité nezaměňovat s __init__.py produktů.
 from flask import Flaskfrom flask.ext.sqlalchemy import SQLAlchemyapp = Flask (__ name __) app.config ['SQLALCHEMY_DATABASE_URI'] = 'sqlite: ///flaskodb.db'db = SQLAlchemy (app) from import flasko.product. register_blue (produkt) db.create_all ()
To, co jsme udělali, je, že po vytvoření objektu db importovali jsme pohledy z naší nové složky a zaregistrovali a modrotisk, nakonec řekneme objektu db, že musí vytvořit všechny potřebné tabulky. Nyní musíme náš soubor upravit models.py do produktu a umístíme následující kód:
 from flasko import dbclass Product (db.Model): id = db.Column (db.Integer, primary_key = True) name = db.Column (db.String (255)) price = db.Column (db.Float) def __init__ (self, name, price): self.name = name self.price = price def __repr __ (self): return ''% self.id
Zde v zásadě děláme to, co děláme definovat třídu který bude mít jako atributy pole, která budeme od našeho produktu vyžadovat, také v něm existuje několik metod pro definici a reprezentaci našeho modelu.
Jakmile je výše uvedené splněno, přejdeme k souboru views.pyV tomto musíme vytvořit kód, který nám umožní interakci s naším modelem, proto musíme napsat následující:
 z žádosti o import z baňky, jsonify, Blueprintfrom flasko importovat aplikaci, dbfrom flasko.product.models import Productproduct = Blueprint ('product', __name __) @ app.route ('/') @ app.route ('/ start') def start (): return "Welcome to Flasko" @ app.route (' / product /') def product (id): product = Product.query.get_or_404 (id) return 'Product -% s, $% s'% ( product .name, product.price) @ app.route ('/ products') def products (): products = Product.query.all () res = {} pro produkt v produktech: res [product.id] = {' name ': product.name,' price ': str (product.price)} return jsonify(res)@app.route (' / create-product ', methods = [' POST ',]) def create_product (): name = request.form.get ('name') price = request.form.get ('price') product = Product (název, cena) db.session.add (product) db.session.commit () return 'The product byl úspěšně vytvořen '
První věcí, které si všimneme, je, že v tomto souboru máme mnohem více obsahu než ve zbytku naší aplikace, a to proto, že se zde odehrává celý život našeho pohledu, první cesta je počátkem naší aplikace a není zahrnovat větší tajemství.
Druhá a třetí cesta jsou pro konzultace, kde můžeme vyhledávat podle ID produktu a v případě, že neexistuje stránka, která by vrátila stránku 404, máme také funkci pro výpis všech produktů dostupných v našem Databáze.
Poslední trasa je ta, která nám umožňuje tuto metodu použít POŠTA vytvoření produktu a jeho následné skladování v DatabázeZa tímto účelem vytvoříme instanci našeho produktového modelu, kde pak předáme uvedený atribut objektu db a s jeho metodami přidat Y spáchat přidáme do Databáze.
Nyní zbývá otestovat naši aplikaci a přidat obsah, který se dostane do naší databáze, pokud si to v souboru pamatujeme views.py vytvoříme pohled, který prostřednictvím metody přijímá data POŠTA a je to ten, kdo má na starosti vkládání do něj. K přidání prvků použijeme modul Krajta volala žádosti to nám umožňuje odesílat data prostřednictvím POST, pokud je nemáme k dispozici, musíme je jednoduše nainstalovat pomocí následujícího příkazu:
 požadavky na instalaci pipu
V sekundární konzole spustíme naši aplikaci flasko aby byl server v provozu a mohl odesílat požadavky od Krajta. V naší interaktivní konzoli Krajta ke kterému se dostaneme napsáním slova krajta, musíme udělat následující:
 requests.post ('http://127.0.0.1:5000/ create-product', data = {'name': 'product1', 'price': '50'})
To, co jsme udělali, bylo odeslat žádost prostřednictvím POŠTA na naši trasu, která přidává prvky do databáze, jsou parametry předávány ve slovníku Krajta který je velmi podobný předmětu JSON.
To by nám mělo dát kód 200, což znamená, že jsme v našem požadavku efektivně uspěli, můžeme to vidět na následujícím obrázku:

Pokud nyní v zobrazení produktů přejdeme k naší aplikaci, uvidíme, jak získáme to, co jsme právě zadali prostřednictvím konzoly:

Vidíme, že máme seznam ve formátu JSON s naším produktem, který jsme právě přidali, pokud nyní hledáme na trase produkt / 1 uvidíme, že to také získáme:

Samozřejmě to zdaleka není něco, co by stálo za to uvést do výroby, ale pomáhá nám to naučit se základy modelů a datové perzistence v rámci Baňka, nejzajímavější je, že protože jsme neprovedli šetření SQL přímé, pokud změníme připojení na sqlite pro jednoho do MySQL například naše aplikace bude i nadále fungovat jako obvykle.
Tím jsme tento tutoriál dokončili, již víme, jak v něm vytvářet modely BaňkaKromě toho jsme se naučili manipulovat základním, ale velmi užitečným způsobem ORM SQLAlchemy, kde jsou tyto komponenty velmi důležité, když stavíme mnohem větší aplikace, protože nám umožní dosáhnout komplexnějších výsledků s menším množstvím práce.

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave