Inhoudsopgave
Onze applicaties zijn veel meer dan eenvoudige pagina's, daarom moeten we manieren creëren om de gegevens op te slaan in een of ander persistentiesysteem, dit is waar de Databases waar het om gaat, om vast te stellen op welke manier de database ons gaat helpen, is dat de modellen moeten worden gemaakt.Een model geeft ons de structuur waaronder de grootste logica van onze applicatie zal werken, dit is waar we een betekenis geven aan de verschillende entiteiten waarmee we moeten beschikken om onze acties uit te voeren.
Kolf je hebt de mogelijkheid om verschillende soorten Databases alleen met behulp van de ORM SQLAlchemie.
VereistenWe hebben een functionele installatie nodig van: Kolf, en de respectievelijke rechten om meer componenten te kunnen installeren via Pip. Als we de mogelijkheid hebben om samen te werken met virtuele omgeving het is veel meer aanbevolen, maar het is niet nodig. Als we de tutorialvoorbeelden willen extrapoleren, hebben we er een nodig Database Wat MySQL voor het geval we de functionaliteit naar een veel reëlere omgeving willen brengen, aangezien we in de oefeningen waarmee we zullen werken sqlite als vereenvoudigingsmaatregel en om praktischer te zijn.
Het eerste wat we zullen doen is installeren SQLAlchemie, deze stap is heel eenvoudig, we hoeven alleen de volgende opdracht uit te voeren in de console die is ingeschakeld om te worden uitgevoerd: Pip:
pip install flask-sqlalchemyAan het einde krijgen we een succesbericht als alles correct is verlopen:
1- Een bestand met de naam run.py dat zal in de root van de applicatie zijn, dit bestand is degene die de basisinitialisatie van onze hele omgeving uitvoert.
2- Een map met de naam fles en hierin een bestand met de naam __init__.py waar we het gebruik van zullen initialiseren kolf en van SQLAlchemie direct.
Laten we in de volgende afbeelding zien hoe deze structuur eruitziet in een project:
van flasko import appapp.run (debug = True)Vervolgens gaan we deze code in ons __init__.py-bestand plaatsen:
from flask import Flaskfrom flask.ext.sqlalchemy import SQLAlchemyapp = Flask (__ naam __) app.config ['SQLALCHEMY_DATABASE_URI'] = 'sqlite: //flaskodb.db'db = SQLAlchemy (app)Deze laatste code is heel gemakkelijk uit te leggen, we importeren alleen Kolf, dan importeren we SQLAlchemie, we stellen onze app op om met het raamwerk te werken en vervolgens brengen we de verbinding tot stand met onze Database in dit geval sqlite, waar het zal worden genoemd flaskdb.db en het zal in dezelfde map staan als onze applicatie. Ten slotte wijzen we het object toe SQLAlchemie naar een variabele genaamd db waarmee we later zullen werken.
Als we onze applicatie nu starten, zou deze zonder fouten moeten starten, het enige is dat we geen resultaat zullen hebben omdat de applicatie nog leeg is.
Omdat we nu de basisconfiguratie van onze applicatie hebben, moeten we de basis leggen om ons model te maken, hiervoor zullen we een map in onze map moeten maken die het bestand bevat __init__.py en daar zullen we de nodige content genereren.
Laten we eens kijken hoe onze mappenstructuur wordt gewijzigd:
from flask import Flaskfrom flask.ext.sqlalchemy import SQLAlchemyapp = Flask (__ naam __) app.config ['SQLALCHEMY_DATABASE_URI'] = 'sqlite: ///flaskodb.db'db = SQLAlchemy (app) van import flasko.product. register_blueprint. (product) db.create_all ()Wat we hebben gedaan, is dat na de creatie van het object db we hebben de views geïmporteerd uit onze nieuwe map en geregistreerd a blauwdruk, ten slotte vertellen we het db-object dat het alle benodigde tabellen moet maken. Nu moeten we ons bestand aanpassen modellen.py inside product, en we zullen de volgende code plaatsen:
van flasko import dbclass Product (db.Model): id = db.Kolom (db.Integer, primary_key = True) naam = db.Kolom (db.String (255)) prijs = db.Kolom (db.Float) def __init__ (zelf, naam, prijs): zelf.naam = naam zelf.prijs = prijs def __repr __ (zelf): return ''% self.idHier doen we eigenlijk: een klasse definiëren die als attributen de velden zal bevatten die we van ons product nodig hebben, ook daarbinnen zijn er een aantal methoden voor de definitie en representatie van ons model.
Zodra het bovenstaande is bereikt, gaan we naar het bestand views.py, hierin moeten we de code maken waarmee we met ons model kunnen communiceren, hiervoor moeten we het volgende schrijven:
from flask import request, jsonify, Blueprintfrom flasko import app, dbfrom flasko.product.models import Productproduct = Blueprint ('product', __name __) @ app.route ('/') @ app.route ('/ start') def start (): return "Welkom bij 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 = {} voor product in producten: res [product.id] = {' name ': product.name,' price ': str (product.price)} return jsonify(res)@app.route (' / create-product ', methods = [' POST ',]) def create_product (): naam = request.form.get ('naam') prijs = request.form.get ('prijs') product = Product (naam, prijs) db.session.add (product) db.session.commit () return 'Het product is succesvol aangemaakt 'Het eerste dat ons opvalt, is dat we veel meer inhoud in dit bestand hebben dan in de rest van onze applicatie en omdat dit is waar het hele leven van onze visie plaatsvindt, is de eerste route het begin van onze applicatie en niet een groter mysterie inhouden.
De tweede en derde route zijn voor overleg, waar we kunnen zoeken op product-ID en als er niets is om een 404-pagina terug te geven, hebben we ook de functionaliteit om alle beschikbare producten in onze Database.
De laatste route is degene die ons door de methode leidt NA het creëren van een product en de daaropvolgende opslag in Database, hiervoor instantiëren we ons productmodel, waar we vervolgens het attribuut doorgeven aan het object db en met zijn methoden toevoegen Y verbinden we voegen het toe aan Database.
Wat nu nog moet gebeuren om onze applicatie te testen, is om de inhoud toe te voegen die in onze database zal komen, als we het ons herinneren in het bestand views.py we creëren een weergave die gegevens ontvangt via de methode NA en het is degene die verantwoordelijk is voor het maken van de invoegingen erin. Om elementen toe te voegen gaan we een module gebruiken Python genaamd verzoeken waarmee we gegevens via POST kunnen verzenden, als we het niet beschikbaar hebben, hoeven we het gewoon te installeren met het volgende commando:
pip installatieverzoekenIn een secundaire console gaan we onze applicatie starten fles zodat de server up is en om de verzoeken te kunnen verzenden van Python. In onze interactieve console Python waartoe we toegang hebben door het woord te schrijven Python, moeten we het volgende doen:
requests.post ('http://127.0.0.1:5000/ create-product', data = {'name': 'product1', 'price': '50'})Wat we deden was een verzoek sturen via NA naar onze route die de elementen aan de database toevoegt, worden de parameters doorgegeven in een woordenboek Python wat erg lijkt op een object JSON.
Dit zou ons een code 200 moeten geven, wat betekent dat we effectief in ons verzoek zijn geslaagd, we kunnen dit zien in de volgende afbeelding:
Hiermee hebben we deze tutorial afgerond, we weten al hoe we modellen moeten maken in KolfBovendien hebben we geleerd om op een eenvoudige, maar zeer nuttige manier te manipuleren met de ORM SQLAlchemie, waar deze componenten erg belangrijk zijn wanneer we veel grotere applicaties bouwen, omdat ze ons in staat stellen om complexere resultaten te bereiken met minder werk.