Erstellen Sie ein Datenmodell in Flask

Unsere Anwendungen sind viel mehr als nur Seiten. Deshalb müssen wir Möglichkeiten zum Speichern der Daten in einem Persistenzsystem schaffen. Hier kommen die Datenbanken ins Spiel, um die Art und Weise festzulegen, in der die Datenbank erstellt wird wird helfen, dass die modelle erstellt werden müssen.

Ein Modell gibt uns die Struktur vor, unter der die größere Logik unserer Anwendung funktioniert. Hier geben wir den verschiedenen Entitäten, mit denen wir rechnen müssen, um unser Handeln auszuüben, einen Sinn.

Flask hat die Möglichkeit, verschiedene Arten von Datenbank- Engines nur mit dem SQLAlchemy ORM zu verwenden .

Anforderungen
Wir benötigen eine funktionierende Installation von Flask und die entsprechenden Berechtigungen, um weitere Komponenten über pip installieren zu können. Wenn wir die Möglichkeit haben, mit Virtualenv zu arbeiten, ist dies viel ratsamer, aber nicht notwendig. Wenn wir die Beispiele des Tutorials extrapolieren möchten, benötigen wir eine Datenbank- Engine wie MySQL , um die Funktionalität in eine viel realere Umgebung zu bringen, da wir in den Übungen mit SQLite als Vereinfachungsmaßnahme arbeiten und praktischer sind.

Installieren Sie SQLAlchemy

Das erste, was wir tun werden, ist die Installation von SQLAlchemy . Dieser Schritt ist sehr einfach. Wir müssen nur den folgenden Befehl in der Konsole ausführen, die zum Ausführen von pip aktiviert ist:

 pip install flask-sqlalchemy 

Am Ende erhalten wir eine Erfolgsmeldung, wenn alles richtig gelaufen ist:

flask-create-models.jpg

Erstellen Sie eine Anwendung zur Verwendung von SQLAlchemy

Wir werden nun SQLAlchemy zum Laufen bringen. Dazu werden wir eine kleine Anwendung erstellen, in der wir sehen, wie wir eine Verbindung mit einem Datenbankmodul herstellen können. In diesem Fall heißt unsere Anwendung flasko, und innerhalb dieser müssen wir die folgende Struktur haben.

– Un archivo llamado ejecutar.py que estará en la raíz de la aplicación, este archivo es el que hace la inicialización básica de todo nuestro entorno. 1 – Eine Datei mit dem Namen execute.py , die sich im Stammverzeichnis der Anwendung befindet. Diese Datei führt die grundlegende Initialisierung aller unserer Umgebungen durch.

– Una carpeta llamada flasko y dentro de esta un archivo llamado __init__.py el cual es donde inicializaremos el uso de flask y de SQLAlchemy directamente. 2 – Ein Ordner mit dem Namen flasko und eine Datei mit dem Namen __init__.py, in der die Verwendung von flask und SQLAlchemy direkt initialisiert wird.

See also  Einführung in die Google Maps JavaScript-API

Sehen wir uns im folgenden Bild an, wie diese Struktur in einem Projekt aussieht:

flask-create-models-2.jpg

Sobald wir bereits wissen, was wir haben sollen, werden wir den Inhalt für unsere ersten Dateien haben. In der Datei run.py sollten wir folgendes haben:

 aus flasko import appapp.run (debug = True) 

Dann werden wir in unsere Datei __init__.py diesen Code einfügen:

 aus der Flasche importieren Flascheaus flask.ext.sqlalchemy importieren SQLAlchemyapp = Flasche (__ name __) app.config ['SQLALCHEMY_DATABASE_URI'] = 'sqlite: //flaskodb.db'db = SQLAlchemy (app) 

Dieser letzte Code ist sehr einfach zu erklären, wir importieren einfach Flask , dann importieren wir SQLAlchemy , stellen unsere App auf die Arbeit mit dem Framework ein und stellen dann die Verbindung zu unserer Datenbank her, in diesem Fall sqlite , wo sie flaskdb.db und heißt befindet sich im selben Verzeichnis wie unsere Anwendung. Schließlich weisen wir das Objekt SQLAlchemy einer Variablen namens db zu, mit der wir später arbeiten werden.

Wenn wir jetzt starten, sollte unsere Anwendung fehlerfrei starten. Das einzige, was wir tun, ist, dass wir keine Ergebnisse erhalten, da die Anwendung noch leer ist.

Erstellen Sie das Modell

Da wir die Grundkonfiguration unserer Anwendung haben, müssen wir jetzt die Grundlagen für die Erstellung unseres Modells legen. Dazu müssen wir einen Ordner in unserem Ordner erstellen, der die Datei __init__.py enthält und in dem wir den erforderlichen Inhalt generieren.

Mal sehen, wie unsere Ordnerstruktur geändert wird:

flask-create-models-4.jpg

Wie wir in unserem neuen Produktordner sehen, haben wir 3 Dateien generiert, eine Datei __init__.py , die leer sein muss, eine Datei models.py und eine andere views.py . Mit dieser Struktur werden wir unser __init__.py vom Stammverzeichnis unserer Anwendung aus ändern, wobei es wichtig ist, nicht mit dem __init__.py von Produkten zu verwechseln.

 aus Kolben importieren Kolbenaus flask.ext.sqlalchemy importieren SQLAlchemyapp = Kolben (__ name __) app.config ['SQLALCHEMY_DATABASE_URI'] = 'sqlite: ///flaskodb.db'db = SQLAlchemy (app) aus flasko.producto.views importieren producto. register_blueprint (Produkt) db.create_all () 

Was wir getan haben, ist, dass wir nach der Erstellung des Objekts db die Ansichten unseres neuen Ordners importiert und eine Blaupause registriert haben. Schließlich geben wir dem Objekt db an, dass es alle erforderlichen Tabellen erstellen muss. Jetzt müssen wir unsere models.py- Datei im Produkt ändern und den folgenden Code einfügen:

 aus flasko importieren dbclass Produkt (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 '<Produkt% d>'% self.id 

Hier definieren wir im Grunde genommen eine Klasse, die die Felder, die wir für unser Produkt benötigen, als Attribute enthält, und in der sich auch einige Methoden zur Definition und Darstellung unseres Modells befinden.

See also  Die Analyse von Twitter verstehen

Sobald das oben Genannte erfüllt ist, wenden wir uns der Datei views.py zu , in der wir den Code erstellen müssen, mit dem wir mit unserem Modell interagieren können.

 aus Flaschenimportanforderung, jsonify, Blueprint aus Flaschenimport-App, db aus Flaschenimport.Produktmodelle Productproduct = Blueprint ('product', __name __) @ app.route ('/') @ app.route ('/ home') def start (): return "Willkommen bei Flasko" @ app.route ('/ product / <id>') 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 = {} für Produkt in Produkten: 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 = Produkt (name, preis) db.session.add (produkt) db.session.commit () return ' Das Produkt wurde erfolgreich erstellt. ' 

Das Erste, was uns auffällt, ist, dass wir in dieser Datei viel mehr Inhalte haben als im Rest unserer Anwendung, und zwar deshalb, weil hier das gesamte Leben unserer Vision stattfindet, der erste Weg der Beginn unserer Anwendung ist und keine weiteren Rätsel aufwirft.

Die zweite und dritte Route dienen der Konsultation, bei der wir nach Produkt-ID suchen können. Falls keine 404-Seite zurückgegeben werden kann, haben wir auch die Funktionalität, alle in unserer Datenbank verfügbaren Produkte aufzulisten .

Der letzte Weg ist der, der es uns ermöglicht, über die POST- Methode ein Produkt zu erstellen und es anschließend in der Datenbank zu speichern. Dazu instanziieren wir unser Produktmodell, wobei wir dieses Attribut dann an das DB- Objekt und dessen Methoden add und commit übergeben . zur Datenbank hinzufügen.

Fügen Sie unserer Datenbank Elemente hinzu

Als Beweis für unsere Anwendung müssen wir nun den Inhalt hinzufügen, der in unserer Datenbank gespeichert wird. Wenn wir uns an die Datei views.py erinnern, erstellen wir eine Ansicht, die Daten über die POST- Methode empfängt und für die Erstellung der Datei verantwortlich ist Einfügungen darin. Um Elemente hinzuzufügen, verwenden wir ein Python- Modul namens ” Anfragen” , mit dem wir Daten über POST senden können. Wenn wir es nicht zur Verfügung haben, installieren wir es einfach mit dem folgenden Befehl:

 Pip-Installationsanforderungen 

In einer sekundären Konsole starten wir unsere Flash- Anwendung, damit der Server hochgefahren ist und die Anforderungen von Python senden kann. In unserer interaktiven Python- Konsole, auf die wir zugreifen, wenn wir das Wort Python schreiben, müssen wir Folgendes tun:

 request.post ('http://127.0.0.1:5000/create-product', data = {'name': 'product1', 'price': '50'}) 

Wir haben eine Anfrage per POST an unsere Route gesendet, die die Elemente zur Datenbank hinzufügt. Die Parameter werden in einem Python- Wörterbuch übergeben, das einem JSON- Objekt sehr ähnlich ist.
Dies sollte uns einen Code 200 geben, was bedeutet, dass unsere Anfrage tatsächlich erfolgreich war. Dies können wir in der folgenden Abbildung sehen:

See also  So verlassen Sie den Gruppenchat mit WhatsApp für immer

flask-create-models-5.jpg

Wenn wir jetzt in der Produktansicht zu unserer Anwendung navigieren, werden wir sehen, wie wir das, was wir gerade eingegeben haben, über die Konsole erhalten:

flask-create-models-6.jpg

Wir sehen, dass wir eine Liste im JSON- Format mit unserem neu hinzugefügten Produkt haben. Wenn wir jetzt eine Suche nach dem Produkt / der Route 1 durchführen , werden wir sehen, dass wir sie auch erhalten:

flask-create-models-7.jpg

Natürlich ist dies alles andere als eine Produktion, aber es hilft uns, die Grundlagen von Modellen und die Persistenz von Daten in Flask zu lernen. Das Interessanteste ist, dass wir keine direkten SQL- Abfragen durchgeführt haben, wenn wir die Verbindung ändern Wenn Sie beispielsweise SQLite for One für MySQL verwenden , funktioniert unsere Anwendung weiterhin wie nichts.

Nachdem wir dieses Tutorial beendet haben, wissen wir bereits, wie man Modelle in Flask erstellt . Außerdem haben wir gelernt, die ORM SQLAlchemy auf eine einfache, aber sehr nützliche Weise zu manipulieren. Diese Komponenten sind sehr wichtig, wenn wir viel größere Anwendungen erstellen, da sie es uns ermöglichen, Ergebnisse zu erzielen komplexer mit weniger arbeit.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *