Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung des ORM-Frameworks Flask-SQLAlchemy in Python

Detaillierte Erläuterung des ORM-Frameworks Flask-SQLAlchemy in Python

WBOY
WBOYOriginal
2023-06-09 23:48:071961Durchsuche

Flask-SQLAlchemy ist ein ORM-Framework (Object Relational Mapping), das auf SQLAlchemy basiert und für Flask-Anwendungen geeignet ist. Das ORM-Framework schirmt den Betrieb der zugrunde liegenden Datenbank ab und stellt eine Python-Programmierschnittstelle bereit, die es Entwicklern ermöglicht, Python-Code direkt zum Betrieb der Datenbank zu verwenden, ohne SQL-Anweisungen schreiben zu müssen.

In diesem Artikel wird die Verwendung des Flask-SQLAlchemy-Frameworks ausführlich vorgestellt, einschließlich der Herstellung einer Verbindung zur Datenbank, der Erstellung von Tabellen, des Einfügens, Aktualisierens, Löschens und Abfragens von Daten.

Mit der Datenbank verbinden

Bevor Sie Flask-SQLAlchemy verwenden, müssen Sie zunächst die Datenbankverbindung in Flask konfigurieren. Die spezifische Methode lautet wie folgt:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = '数据库连接信息'  # 数据库连接信息
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False  # 是否追踪对象的修改
db = SQLAlchemy(app)

Unter diesen sind SQLALCHEMY_DATABASE_URI die Datenbankverbindungsinformationen. Wenn Sie SQLite verwenden, ist das Format sqlite:///文件路径;如果是MySQL,则格式为mysql+pymysql://用户名:密码@主机名/数据库名(pymysql是用于连接MySQL的Python库);如果是PostgreSQL,则格式为postgresql://用户名:密码@主机名/数据库名.

SQLALCHEMY_TRACK_MODIFICATIONS gibt an, ob Änderungen am Objekt verfolgt werden sollen. Wenn es auf „True“ gesetzt ist, wird der Status des Objekts am Ende jeder Anfrage überprüft und in die Datenbank geschrieben. Diese Funktion kann zum Debuggen und zur Leistungsoptimierung verwendet werden, ist jedoch mit einem gewissen Mehraufwand verbunden. Daher wird empfohlen, es in Produktionsumgebungen zu deaktivieren.

Tabellen erstellen

Flask-SQLAlchemy unterstützt das Definieren von Tabellen über Python-Klassen. Jede Klasse entspricht einer Datenbanktabelle und die Attribute in der Klasse entsprechen den Feldern der Datenbanktabelle.

Das Folgende ist ein Beispiel:

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username

Unter diesen ist db.Model die Basisklasse aller Modellklassen, was darauf hinweist, dass es sich bei dieser Klasse um ein Datenbankmodell handelt. ID, Benutzername und E-Mail sind die Felder dieser Tabelle, wobei ID der Primärschlüssel ist. Benutzername und E-Mail sind beide eindeutig und dürfen nicht leer sein. Die Methode __repr__() wird zum Drucken von Objekten zum einfachen Debuggen verwendet.

Um diese Tabelle zu erstellen, führen Sie einfach den folgenden Befehl aus:

from app import db
db.create_all()

Dadurch wird eine Tabelle mit dem Namen „Benutzer“ in der Datenbank erstellt. Wenn es bereits vorhanden ist, wird es nicht erneut erstellt. Wenn mehrere Tabellen erstellt werden müssen, können diese mit dem Befehl db.create_all() an derselben Stelle erstellt werden.

Daten einfügen

Um Daten in die Datenbank einzufügen, müssen Sie nur eine Klasseninstanz erstellen und die Methoden add() und commit() aufrufen.

from app import db
from app.models import User

user = User(username='test', email='test@test.com')
db.session.add(user)
db.session.commit()

Im obigen Code wird zuerst ein Benutzerobjekt erstellt und dann der Datenbanksitzung hinzugefügt. Rufen Sie abschließend die Methode commit() auf, um die Transaktion festzuschreiben und die Daten in der Datenbank zu speichern.

Daten aktualisieren

Das Aktualisieren von Daten ähnelt dem Einfügen von Daten. Sie müssen lediglich die zu aktualisierenden Daten abfragen, ihre Attribute ändern und sie senden.

from app import db
from app.models import User

user = User.query.filter_by(username='test').first()
user.email = 'new_test@test.com'
db.session.commit()

Im obigen Code wird das zu aktualisierende Benutzerobjekt zunächst anhand des Benutzernamens abgefragt, dann das E-Mail-Attribut geändert und die Änderung übermittelt.

Das Löschen von Daten

ähnelt dem Aktualisieren von Daten. Sie müssen lediglich zuerst die zu löschenden Daten abfragen und dann die Methode delete () aufrufen, um sie zu löschen.

from app import db
from app.models import User

user = User.query.filter_by(username='test').first()
db.session.delete(user)
db.session.commit()

Im obigen Code wird das zu löschende Benutzerobjekt zunächst anhand des Benutzernamens abgefragt und dann die Methode delete() aufgerufen, um es zu löschen.

Daten abfragen

Flask-SQLAlchemy unterstützt eine Vielzahl von Abfragemethoden, einschließlich Abfragen nach Bedingungen, Sortieren, Paging usw.

Abfrage nach Bedingung

Abfrage nach Bedingung ist die gebräuchlichste Methode. Mit der Methode query.filter() können Sie Abfragebedingungen angeben. Der Beispielcode lautet wie folgt:

from app import db
from app.models import User

# 查询所有
users = User.query.all()

# 条件查询
users = User.query.filter_by(username='test').all()

Im obigen Code fragt die erste Codezeile alle Daten in der Benutzertabelle ab; die zweite Codezeile fragt die Daten gemäß der Bedingung username='test' ab.

Abfrage sortieren

Sie können die Methode order_by() verwenden, um die Abfrageergebnisse zu sortieren. Der Beispielcode lautet wie folgt:

from app import db
from app.models import User

# 按名称排序(升序)
users = User.query.order_by(User.username).all()

# 按名称排序(降序)
users = User.query.order_by(User.username.desc()).all()

Im obigen Code sortiert die erste Codezeile die Abfrageergebnisse in aufsteigender Reihenfolge nach Benutzernamen; die zweite Codezeile sortiert die Abfrageergebnisse in absteigender Reihenfolge nach Benutzernamen.

Paginierungsabfrage

Sie können die Methode paginate() verwenden, um eine Paginierungsabfrage zu implementieren. Der Beispielcode lautet wie folgt:

from app import db
from app.models import User

# 每页2条,查询第1页
users = User.query.paginate(1, 2, False)

# 查询第一页
users = User.query.order_by(User.username).paginate(1, 10, False)

Im obigen Code fragt die erste Codezeile 2 Datenelemente auf Seite 1 ab; die zweite Codezeile fragt 10 Datenelemente auf Seite 1 ab, sortiert nach Benutzername.

Zusammenfassung

Flask-SQLAlchemy ist ein leistungsstarkes ORM-Framework, das eine leistungsstarke Schnittstelle zum Abfragen und Betreiben von Datenbanken bietet und es Entwicklern ermöglicht, die Datenbank schnell und einfach zu betreiben. In diesem Artikel wird die Verwendung von Flask-SQLAlchemy vorgestellt, einschließlich der Erstellung von Tabellen sowie des Einfügens, Aktualisierens, Löschens und Abfragens von Daten. Ich hoffe, dass dieser Artikel den Lesern helfen kann, Flask-SQLAlchemy besser zu verstehen und anzuwenden.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des ORM-Frameworks Flask-SQLAlchemy in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn