Izradite model podataka u Flasku

Sadržaj
Naše su aplikacije puno više od jednostavnih stranica, zato moramo stvoriti načine za pohranu podataka u nekom sustavu postojanosti, tu se Baze podataka u igri je da bi se ustanovili način na koji će nam baza podataka pomoći da se stvore modeli.
Model nam daje strukturu pod kojom će djelovati najveća logika naše aplikacije, tu dajemo značenje različitim entitetima s kojima moramo imati da bismo mogli izvršavati svoje radnje.
Boca imate mogućnost korištenja različitih vrsta Baze podataka samo pomoću ORK SQLAlkemija.
ZahtjeviPotrebna nam je funkcionalna instalacija Bocai odgovarajuća dopuštenja za instaliranje više komponenti pip. Ako imamo mogućnost surađivati Virtualenv mnogo se više preporučuje, međutim nije potrebno. Ako želimo ekstrapolirati primjere vodiča, trebat će nam neki Baza podataka Što MySQL u slučaju da funkcionalnost želimo unijeti u mnogo realnije okruženje budući da ćemo u vježbama s kojima ćemo raditi sqlite kao mjera pojednostavljenja i biti praktičnija.
Prvo što ćemo učiniti je instalirati SQLAlkemija, ovaj korak je vrlo jednostavan, samo moramo izvršiti sljedeću naredbu u konzoli omogućenoj za pokretanje pip:
 pip install flask-sqlalchemy
Na kraju ćemo dobiti poruku uspjeha ako je sve prošlo kako treba:

Stavimo sada SQLAlkemija za rad, za ovo ćemo stvoriti malu aplikaciju u kojoj ćemo vidjeti kako možemo uspostaviti vezu s bazom podataka. U tom slučaju bit će pozvana naša aplikacija flasko a unutar nje moramo imati sljedeću strukturu.
1- Datoteka pod nazivom run.py koja će biti u korijenu aplikacije, ova datoteka je ta koja vrši osnovnu inicijalizaciju cijelog našeg okruženja.
2- Mapa pod nazivom flasko a unutar ove datoteke pod nazivom __init__.py gdje ćemo pokrenuti upotrebu tikvica i od SQLAlkemija direktno.
Pogledajmo na sljedećoj slici kako ova struktura izgleda u projektu:

Kad saznamo što bismo trebali imati, imat ćemo sadržaj za naše početne datoteke. U datoteci run.py moramo imati sljedeće:
 from flasko import appapp.run (debug = True)
Zatim ćemo u našu datoteku __init__.py postaviti ovaj kod:
 iz flask import Flaskiz flask.ext.sqlalchemy import SQLAlchemyapp = Flask (__ name __) app.config ['SQLALCHEMY_DATABASE_URI'] = 'sqlite: //flaskodb.db'db = SQLAlchemy (app)
Ovaj posljednji kôd vrlo je lako objasniti, samo uvozimo Boca, zatim uvozimo SQLAlkemija, uspostavljamo našu aplikaciju za rad s okvirom, a zatim uspostavljamo vezu s našom Baza podataka u ovom slučaju sqlite, gdje će se zvati flaskdb.db i bit će u istom direktoriju kao i naša aplikacija. Na kraju dodjeljujemo objekt SQLAlkemija varijabli tzv db s kojim ćemo kasnije raditi.
Ako sada pokrenemo našu aplikaciju, trebala bi se pokrenuti bez pogrešaka, jedino nećemo imati rezultat jer je aplikacija još uvijek prazna.
Budući da sada imamo osnovnu konfiguraciju naše aplikacije, moramo postaviti temelje za stvaranje našeg modela, za to ćemo u našoj mapi morati stvoriti mapu koja sadrži datoteku __init__.py i tu ćemo generirati potrebne sadržaje.
Pogledajmo kako se mijenja struktura naših mapa:

Kao što vidimo unutar naše nove mape proizvoda, generirali smo 3 datoteke, datoteku __init__.py koja mora biti prazna, datoteka models.py i druge views.py. S ovom strukturom ćemo izmijeniti našu __init__.py iz korijena naše aplikacije, gdje je važno ne miješati se s __init__.py proizvoda.
 from flask import Flaskfrom flask.ext.sqlalchemy import SQLAlchemyapp = Flask (__ name __) app.config ['SQLALCHEMY_DATABASE_URI'] = 'sqlite: ///flaskodb.db'db = SQLAlchemy (app) iz registra imporko_lub.produp. (proizvod) db.create_all ()
Ono što smo učinili je da nakon stvaranja objekta db uvezali smo prikaze iz naše nove mape i registrirali a plan, na kraju kažemo objektu db da mora stvoriti sve potrebne tablice. Sada moramo izmijeniti našu datoteku models.py unutar proizvoda, a mi ćemo postaviti sljedeći kod:
 from flasko import dbclass Proizvod (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
Ovdje u osnovi ono što mi radimo je definirati klasu koji će kao atribute nositi polja koja ćemo zahtijevati od našeg proizvoda, također unutar njega postoji nekoliko metoda za definiranje i predstavljanje našeg modela.
Nakon što je gore navedeno postignuto, idemo na datoteku views.py, u ovom moramo stvoriti kôd koji nam omogućuje interakciju s našim modelom za to moramo napisati sljedeće:
 iz zahtjeva za uvoz tikvice, jsonify, Blueprintiz aplikacije flashko importa, dbfrom flasko.product.models uvoz Productproduct = Blueprint ('product', __name __) @ app.route ('/') @ app.route ('/ start') def start (): return "Dobro došli u 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 = {} za proizvod u proizvodima: 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 = Proizvod (naziv, cijena) db.session.add (proizvod) db.session.commit () return 'Proizvod uspješno je kreiran '
Prvo što primjećujemo je da u ovoj datoteci imamo mnogo više sadržaja nego u ostatku naše aplikacije, a to je zato što se tu odvija čitav život našeg pogleda, prva ruta je početak naše aplikacije i ne uključuju bilo kakvu veću misteriju.
Drugi i treći put su za konzultacije, gdje možemo pretraživati ​​prema ID -u proizvoda, a u slučaju da nema ništa za vratiti stranicu 404, imamo i funkcionalnost za popis svih proizvoda dostupnih u našim Baza podataka.
Posljednji put je onaj koji nam omogućuje kroz metodu POST stvaranje proizvoda i njegovo kasnije skladištenje u Baza podataka, za to primjenjujemo naš Model proizvoda, gdje zatim prosljeđujemo spomenuti atribut objektu db i sa svojim metodama dodati Y počiniti tome dodajemo Baza podataka.
Ono što preostaje za testiranje naše aplikacije je dodavanje sadržaja koji će ići u našu bazu podataka, ako se sjećamo u datoteci views.py stvaramo prikaz koji prima metodu putem podataka POST a on je zadužen za umetanje u njega. Za dodavanje elemenata koristit ćemo modul Piton zvao zahtjevi koji nam omogućuje slanje podataka putem POST -a, ako ih nemamo na raspolaganju, jednostavno ih moramo instalirati sa sljedećom naredbom:
 pip zahtjevi za instalaciju
Na sekundarnoj konzoli ćemo pokrenuti našu aplikaciju flasko tako da poslužitelj radi i da može slati zahtjeve s Piton. U našoj interaktivnoj konzoli Piton kojima pristupamo upisujući riječ piton, moramo učiniti sljedeće:
 requests.post ('http://127.0.0.1:5000/ create-product', data = {'name': 'product1', 'price': '50'})
Ono što smo učinili bilo je slanje zahtjeva putem POST na našu rutu koja dodaje elemente u bazu podataka, parametri se prenose u rječnik Piton koji je vrlo sličan objektu JSON.
Ovo bi nam trebalo dati kôd 200 što znači da smo uspješno uspjeli u našem zahtjevu, to možemo vidjeti na sljedećoj slici:

Ako sada pređemo na našu aplikaciju u prikazu proizvoda, vidjet ćemo kako dobivamo ono što smo upravo unijeli putem konzole:

Vidimo da imamo popis u formatu JSON s našim proizvodom koji smo upravo dodali, ako sada pretražimo rutu proizvod / 1 vidjet ćemo da ćemo i to dobiti:

Naravno, ovo daleko od toga da je vrijedno stavljanja u proizvodnju, no pomaže nam naučiti osnove modela i postojanost podataka unutar Boca, najzanimljivije je to što se nismo raspitivali SQL izravno, ako promijenimo vezu na sqlite za jednu do MySQL na primjer, naša će aplikacija nastaviti raditi kao i obično.
Ovim smo završili ovaj vodič, već znamo kako stvoriti modele u BocaOsim toga, naučili smo manipulirati na osnovni, ali vrlo koristan način ORK SQLAlkemija, gdje su ove komponente vrlo važne pri izgradnji mnogo većih aplikacija jer će nam omogućiti postizanje složenijih rezultata uz manje rada.

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave