Cuprins
Aplicațiile noastre sunt mult mai mult decât pagini simple, de aceea trebuie să creăm modalități de stocare a datelor într-un sistem de persistență, aici este locul unde Baze de date în joc, pentru a stabili modul în care baza de date ne va ajuta este că modelele trebuie create.Un model ne oferă structura sub care va funcționa cea mai mare logică a aplicației noastre, de aici dăm un sens diferitelor entități cu care trebuie să avem pentru a ne exercita acțiunile.
Balon aveți posibilitatea de a utiliza diferite tipuri de Baze de date folosind numai ORM SQLAlchemy.
CerințeAvem nevoie de o instalare funcțională a Balonși permisiunile respective pentru a putea instala mai multe componente pip. Dacă avem posibilitatea să lucrăm cu Virtualenv este mult mai recomandat, însă nu este necesar. Dacă vrem să extrapolăm exemplele de tutoriale, vom avea nevoie de câteva Bază de date Ce MySQL în cazul în care dorim să aducem funcționalitatea într-un mediu mult mai real, deoarece în exercițiile cu care vom lucra sqlite ca măsură de simplificare și să fie mai practic.
Primul lucru pe care îl vom face este să instalăm SQLAlchimie, acest pas este foarte simplu, trebuie doar să executăm următoarea comandă în consola activată pentru a rula pip:
pip instala flask-sqlalchemyLa final vom primi un mesaj de succes dacă totul a decurs corect:
Să punem acum SQLAlchimie pentru a lucra, pentru aceasta vom crea o mică aplicație în care vom vedea cum putem stabili o conexiune cu un motor de baze de date. În acest caz, aplicația noastră va fi apelată flasko iar în cadrul acestuia trebuie să avem următoarea structură.
1- Un fișier numit run.py care va fi în rădăcina aplicației, acest fișier este cel care face inițializarea de bază a întregului nostru mediu.
2- Un dosar numit flasko iar în interiorul acestuia un fișier numit __init__.py care este locul unde vom inițializa utilizarea balon și de SQLAlchimie direct.
Să vedem în imaginea următoare cum arată această structură într-un proiect:
Odată ce știm ce ar trebui să avem, vom avea conținutul pentru fișierele noastre inițiale. În fișier run.py trebuie să avem următoarele:
din flasko import appapp.run (depanare = Adevărat)Apoi, în fișierul nostru __init__.py vom plasa acest cod:
din flask import Flaskfrom flask.ext.sqlalchemy import SQLAlchemyapp = Flask (__ name __) app.config ['SQLALCHEMY_DATABASE_URI'] = 'sqlite: //flaskodb.db'db = SQLAlchemy (app)Acest ultim cod este foarte ușor de explicat, doar îl importăm Balon, apoi importăm SQLAlchimie, stabilim aplicația noastră pentru a lucra cu cadrul și apoi stabilim conexiunea cu Bază de date în acest caz sqlite, unde va fi numit flaskdb.db și va fi în același director cu aplicația noastră. În cele din urmă atribuim obiectul SQLAlchimie la o variabilă numită db cu care vom lucra mai târziu.
Dacă începem aplicația noastră acum, ar trebui să înceapă fără erori, singurul lucru este că nu vom avea un rezultat, deoarece aplicația este încă goală.
Deoarece acum avem configurația de bază a aplicației noastre, trebuie să punem bazele pentru a crea modelul nostru, pentru aceasta va trebui să creăm un folder în dosarul nostru care conține fișierul __init__.py și acolo vom genera conținutul necesar.
Să vedem cum se modifică structura folderelor noastre:
După cum putem vedea în noul nostru folder de produse, am generat 3 fișiere, un fișier __init__.py care trebuie să fie gol, un fișier models.py si altul views.py. Cu această structură vom modifica __init__.py din rădăcina aplicației noastre, unde este important să nu ne confundăm cu __init__.py produsele.
din 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. (produs) db.create_all ()Ceea ce am făcut este că după crearea obiectului db am importat vizualizările din noul nostru folder și am înregistrat un plan, în cele din urmă îi spunem obiectului db că trebuie să creeze toate tabelele necesare. Acum trebuie să ne modificăm fișierul models.py în interiorul produsului și vom plasa următorul cod:
din flasko import dbclass Produs (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 = nume self.price = preț def __repr __ (self): returnează ''% self.idAici practic ceea ce facem este definește o clasă care va purta ca atribute câmpurile pe care le vom solicita produsului nostru, de asemenea, în cadrul acestuia există câteva metode pentru definirea și reprezentarea modelului nostru.
Odată ce cele de mai sus sunt realizate, mergem la fișier views.py, în aceasta trebuie să creăm codul care ne permite să interacționăm cu modelul nostru pentru aceasta trebuie să scriem următoarele:
din cererea de import a balonului, jsonify, Blueprint de la flasko import app, dbde la flasko.product.models import Productproduct = Blueprint ('produs', __name __) @ app.route ('/') @ app.route ('/ start') def start (): returnează „Bun venit la Flasko” @ app.route ('/ product /') def product (id): product = Product.query.get_or_404 (id) returnează 'Produs -% s, $% s'% ( product .name, product.price) @ app.route ('/ products') def products (): products = Product.query.all () res = {} pentru produsul din produse: res [product.id] = {' nume ': product.name,' price ': str (product.price)} return jsonify(res)@app.route (' / create-product ', methods = [' POST ',]) def create_product (): name = request.form.get ('nume') preț = request.form.get ('preț') produs = Produs (nume, preț) db.session.add (produs) db.session.commit () returnează 'Produsul a fost creat cu succes 'Primul lucru pe care îl observăm este că avem mult mai mult conținut în acest fișier decât în restul aplicației noastre și pentru că aici se desfășoară întreaga viață a vederii noastre, primul traseu este începutul aplicației noastre și nu are implică orice mister mai mare.
Cea de-a doua și a treia rută sunt pentru consultare, unde putem căuta după codul produsului și în cazul în care nu există nimic care să returneze o pagină 404, avem și funcționalitatea de a lista toate produsele disponibile în Bază de date.
Ultimul traseu este cel care ne permite prin metodă POST crearea unui produs și stocarea ulterioară a acestuia în Bază de date, pentru aceasta, instanțăm modelul nostru de produs, unde apoi transmitem atributul respectiv obiectului db și cu metodele sale adăuga Da comite îl adăugăm la Bază de date.
Acum ceea ce rămâne să testăm aplicația noastră este să adăugăm conținutul care va intra în baza noastră de date, dacă ne amintim în fișier views.py creăm o vizualizare care primește date prin metodă POST și este cel însărcinat cu realizarea inserțiilor în el. Pentru a adăuga elemente vom folosi un modul Piton numit solicitări care ne permite să trimitem date prin POST, dacă nu le avem disponibile, trebuie pur și simplu să le instalăm cu următoarea comandă:
solicitări de instalare pipÎntr-o consolă secundară vom începe aplicația noastră flasko astfel încât serverul să fie activ și să poată trimite solicitările de la Piton. În consola noastră interactivă Piton la care accesăm scriind cuvântul piton, trebuie să facem următoarele:
requests.post ('http://127.0.0.1:5000/ create-product', data = {'name': 'product1', 'price': '50'})Ceea ce am făcut a fost să trimitem o solicitare prin POST la ruta noastră care adaugă elementele în baza de date, parametrii sunt trecuți într-un dicționar Piton care se aseamănă foarte mult cu un obiect JSON.
Acest lucru ar trebui să ne ofere un cod 200 care înseamnă că am reușit în mod eficient la solicitarea noastră, putem vedea acest lucru în următoarea imagine:
Dacă navighăm acum la aplicația noastră în vizualizarea produselor, vom vedea cum obținem ceea ce tocmai am introdus prin consolă:
Vedem că avem o listă în format JSON cu produsul nostru pe care tocmai l-am adăugat, dacă acum căutăm pe traseu produs / 1 vom vedea că o vom obține și:
Desigur, acest lucru este departe de a fi ceva demn de a fi pus în producție, însă ne ajută să învățăm fundamentele modelelor și persistenței datelor în Balon, cel mai interesant lucru este că, din moment ce nu am făcut anchete SQL direct, dacă schimbăm conexiunea la sqlite pentru unul MySQL de exemplu, aplicația noastră va continua să funcționeze ca de obicei.
Cu aceasta am terminat acest tutorial, știm deja cum să creăm modele în BalonÎn plus, am învățat să manipulăm elementele de bază, dar foarte utile ORM SQLAlchemy, unde aceste componente sunt foarte importante atunci când construim aplicații mult mai mari, deoarece ne vor permite să obținem rezultate mai complexe cu mai puțină muncă.