Flask SQLAlchemy-Update

Salman Mehmood 21 Juni 2023
Flask SQLAlchemy-Update

Wir werden mit dieser Erklärung lernen, wie man eine Zeile mit Hilfe der SQLAlchemy-Datenbank in der Flask-App einfügt und aktualisiert.

Aktualisieren Sie eine Zeile mithilfe der SQLAlchemy-Datenbank in der Flask-App

Wir haben ein einfaches Modell namens Employee_Model, das ein paar Felder hat. Wir werden an diesem Modell arbeiten.

from datetime import datetime
from flask import Flask
from flask_sqlalchemy import SQLAlchemy


app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///db.sqlite3"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)


class Employee_Model(db.Model):
    Employee_ID = db.Column(db.Integer, primary_key=True)
    Employee_Name = db.Column(db.String(50))
    Employee_Email = db.Column(db.String(100), unique=True)
    Date_Field = db.Column(db.Date, default=datetime.utcnow)

    def __repr__(self):
        return f"<Employee_Model: {self.Employee_Email}>"


if __name__ == "__main__":
    app.run(debug=True)

Jetzt öffnen wir die Python-Shell und importieren db und Employee_Model aus unserer Flask-App. Dann erstellen wir die Datenbank mit db.create_all().

Wir werden Employee_Model.query.all() verwenden, um Ihnen zu zeigen, dass sich nichts in der Datenbank befindet.

>>> from app import db,Employee_Model
>>> db.create_all()
>>> Employee_Model.query.all()
[]

Jetzt müssen wir als erstes Daten in die Datenbank einfügen, bevor wir die Daten aktualisieren. Dazu instanziieren wir unser Modell Employee_Model.

Wir werden es mit den Feldern instanziieren. Wir verwenden nicht Employee_ID oder Date_Field, da beide Felder automatisch generiert werden können.

Employee_ID wird von der Datenbank generiert und Date_Field erhält den Standardwert, also datetime.utcnow. Dann fügen wir eine einzelne Datenzeile mit db.session.add() hinzu und übergeben ein Objekt.

Dann werden wir die Daten mit db.session.commit() übergeben, wodurch alles gespeichert wird. Wenn wir den Befehl Employee_Model.query.all() ausführen, sehen wir einen Mitarbeiter in der Datenbank, und wir können das Date_Field-Objekt mit dem jack.Date_Field sehen, das das Datum enthält.

>>> jack=Employee_Model(Employee_Name='jack',Employee_Email='jack@something.com')
>>> db.session.add(jack)
>>> db.session.commit()
>>> Employee_Model.query.all()
[<Employee: jack@something.com>]
>>> jack.Date_Field
datetime.date(2022, 7, 14)

Wir können dies manuell tun, wenn wir das Standarddatum nicht verwenden möchten. Dazu importieren wir das Datum aus datetime und können dann einen neuen Mitarbeiter mit dem Objektnamen laura erstellen.

Wir werden einen Namen in der E-Mail an die Klasse Employee_Model() liefern und dann Date_Field übergeben.

Jetzt müssen wir das Objekt laura in die Datenbank einfügen und in der Datenbank speichern. Wenn wir die Abfrage aus der Datenbank extrahieren, sehen wir zwei Mitarbeiter in der Datenbank.

>>> from datetime import date
>>> from app import db,Employee_Model
>>>laura=Employee_Model(Employee_Name='laura',Employee_Email='laura@something.com',Date_Field=date(2022,7,14))
>>> db.session.add(laura)
>>> db.session.commit()
>>> Employee_Model.query.all()
[<Employee: jack@something.com>, <Employee: laura@something.com>]

Jetzt werden wir Daten in der Datenbank für eine bestimmte Sache aktualisieren. Angenommen, wir möchten das Objekt jack abfragen.

Dazu filtern wir das Objekt jack mit filter_by(Employee_Name='jack'), suchen also nach einer beliebigen Zeile mit dem Namen jack. Wir möchten das erste Ergebnis erhalten, und es sollte eindeutig sein.

Jetzt aktualisieren wir das Feld Employee_Email mit dem Zuweisungsoperator und verpflichten es dann, den aktualisierten Datensatz in der Datenbank zu speichern. Wenn wir die Abfrage durchführen und alle Benutzer in der Datenbank abrufen, sehen wir statt jack@something.com jack123@something.com.

>>> from app import db,Employee_Model
>>> jack=Employee_Model.query.filter_by(Employee_Name='jack').first()
>>> jack
<Employee: jack@something.com>
>>> jack.Employee_Email='jack123@something.com'
>>> db.session.commit()
>>> Employee_Model.query.all()
[<Employee: jack123@something.com>, <Employee: laura@something.com>]
>>> jack.Employee_Email
'jack123@something.com'
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

Verwandter Artikel - Flask SQLAlchemy