SQLAlchemy ist eine leistungsstarke Python-SQL-Bibliothek, die eine Abstraktion auf hoher Ebene für den Betrieb mit Datenbanken bietet. Durch die Verwendung des ORM-Frameworks (Object Relational Mapping) von SQLAlchemy können wir die Datenbank bequem objektorientiert im Programm betreiben, ohne komplexe SQL-Anweisungen schreiben und uns mit zugrunde liegenden Details wie Datenbankverbindungen und Transaktionen befassen zu müssen. In diesem Artikel stellen wir das ORM-Framework von SQLAlchemy ausführlich vor und untersuchen, wie man es zur Durchführung verschiedener Datenbankoperationen verwendet.
1. Installieren und konfigurieren Sie SQLAlchemy
Bevor wir SQLAlchemy verwenden, müssen wir es zuerst installieren. Sie können einen Paketmanager wie pip oder conda verwenden, um SQLAlchemy zu installieren:
pip install sqlalchemy
Nach Abschluss der Installation können wir die SQLAlchemy-Bibliothek in Python-Programmen verwenden. Bevor wir es verwenden können, müssen wir die SQLAlchemy-Engine und die Metadaten im Programm initialisieren. Sie können den folgenden Code verwenden, um dies zu erreichen:
from sqlalchemy import create_engine, MetaData engine = create_engine('数据库连接字符串') metadata = MetaData(bind=engine)
Darunter muss die „Datenbankverbindungszeichenfolge“ durch die tatsächliche Datenbankverbindungszeichenfolge ersetzt werden, zum Beispiel:
engine = create_engine('mysql+pymysql://root:password@localhost/test')
Hier wird eine MySQL-Datenbank verwendet, der Benutzername ist root , das Passwort lautet „password“ und der Name der verbundenen Datenbank zum Testen.
2. Datenbanktabellen und ORM-Zuordnung definieren
Bevor wir das ORM-Framework von SQLAlchemy verwenden, müssen wir zunächst die Struktur der Datenbanktabelle definieren. Dies kann durch die Definition einer Python-Klasse erreicht werden. Zum Beispiel:
from sqlalchemy import Column, Integer, String class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(50)) age = Column(Integer) email = Column(String(120), unique=True) def __repr__(self): return f"<User(name='{self.name}', age={self.age}, email='{self.email}')>"
In diesem Beispiel definieren wir eine Benutzerklasse, die einer Datenbanktabelle mit dem Namen „Benutzer“ entspricht. Diese Tabelle enthält vier Felder: ID, Name, Alter und E-Mail. Durch die Definition dieser Attribute in der Python-Klasse stellen wir eine Zuordnungsbeziehung her, und jede Spalte in der Tabelle entspricht einem Attribut in der Python-Klasse. Mit der Funktion __repr__ können Sie die Eigenschaften eines Objekts komfortabel ausgeben.
Um die Benutzerklasse und die Datenbanktabelle abzubilden, müssen wir auch ein Metadatenobjekt der Datentabelle definieren. Dieses Objekt enthält einige Informationen, die die Struktur der Datentabelle beschreiben, z. B. Darstellung, Spaltennamen, Datentypen, Einschränkungen usw. Gleichzeitig müssen wir auch die Sessionmaker-Funktion verwenden, um eine Sitzungsfabrik zum Erstellen von Datenbanksitzungsobjekten zu erstellen:
from sqlalchemy.orm import sessionmaker Base.metadata.create_all(engine) Session = sessionmaker(bind=engine)
Hier verwenden wir die Methode create_all(), um alle Klassen abzubilden, die von der Basisklasse erben. Das Session-Objekt ist eine Factory-Funktion zum Erstellen einer Datenbanksitzung, die an eine Datenbank-Engine gebunden werden muss.
3. Verwenden Sie ORM für Datenbankoperationen
Nachdem wir die Klassen und Metadatenobjekte der Datentabelle definiert haben, können wir beginnen, ORM für Datenbankoperationen zu verwenden. Das ORM von SQLAlchemy bietet eine Reihe von APIs, die für CRUD-Operationen und Abfrageoperationen verwendet werden können. Wir werden diese Operationen im Folgenden separat vorstellen.
Eine der am häufigsten verwendeten Operationen in ORM ist das Hinzufügen von Daten. Dies kann erreicht werden, indem ein Datentabellenobjekt erstellt und zur Sitzung hinzugefügt wird.
from sqlalchemy.orm import Session user = User(name='Alice', age=20, email='alice@example.com') session = Session() session.add(user) session.commit()
In diesem Beispiel erstellen wir ein Benutzerobjekt und fügen es der Sitzung hinzu. Abschließend werden die Daten durch Aufruf der Methode commit() an die Datenbank übermittelt.
Verwenden Sie das ORM-Framework, um Daten zu ändern. Sie können die Methoden rollback() und commit() verwenden, um Transaktionsvorgänge zu implementieren.
session = Session() user = session.query(User).filter_by(name='Alice').first() if user: user.age = 21 session.rollback() session.commit()
In diesem Beispiel rufen wir zunächst einen Benutzerdatensatz namens „Alice“ aus der Datenbank ab, indem wir die query()-Methode des Sitzungsobjekts verwenden. Anschließend wird das Altersattribut des Benutzers geändert und die Methode rollback() aufgerufen. Dieser Vorgang macht alle Aktualisierungsvorgänge rückgängig, die nach der Änderung in der Datenbank durchgeführt wurden. Durch den Aufruf der Methode commit() werden schließlich die geänderten Daten an die Datenbank übermittelt.
Es ist auch sehr einfach, das ORM-Framework zum Löschen von Daten zu verwenden. Sie können die zu löschenden Daten direkt aus der Antwort löschen.
session = Session() user = session.query(User).filter_by(name='Alice').first() if user: session.delete(user) session.commit()
In diesem Beispiel verwenden wir zunächst die Methode query(), um einen Benutzerdatensatz namens „Alice“ aus der Datenbank abzurufen. Löschen Sie dann diesen Datensatz aus der Sitzung und senden Sie den Löschvorgang über die Methode commit() an die Datenbank.
Mit der Methode query() können Sie Abfragevorgänge ausführen und mit der Methode filter_by() Abfragebedingungen angeben. Nachdem die Abfrage abgeschlossen ist, können Sie die Methode all() verwenden, um alle Ergebnisse abzurufen, oder Sie können die Methode first() verwenden, um das erste Ergebnis abzurufen.
session = Session() users = session.query(User).all() for user in users: print(user)
In diesem Beispiel haben wir zuerst die Methode query() verwendet, um alle Datensätze aus der Benutzertabelle abzurufen. Anschließend alle Ergebnisse durchlaufen und die Attribute ausgeben.
Zusätzlich zu einfachen Abfragen können wir auch einige erweiterte Abfragemethoden verwenden, z. B. die Methode „order_by()“ zum Sortieren nach einer bestimmten Spalte oder die Methode „limit()“, um die Anzahl der zurückgegebenen Ergebnisse zu begrenzen.
users = session.query(User).order_by(User.age.desc()).limit(10).all()
Hier erhalten wir die Top-10-Datensätze aus der Benutzertabelle in absteigender Reihenfolge nach Altersspalte.
4. Zusammenfassung
SQLAlchemy ist eine leistungsstarke Python-SQL-Bibliothek und ihr ORM-Framework bietet eine Abstraktion auf hoher Ebene für den Betrieb von Datenbanken. Durch die Definition von Klassen, Metadatenobjekten und Sitzungsfabriken können wir verschiedene Datenbankoperationen einfach implementieren. SQLAlchemy bietet viele umfangreiche APIs, die für CRUD-Operationen, Abfrageoperationen, Transaktionsoperationen usw. verwendet werden können. Gleichzeitig unterstützt es auch eine Vielzahl von Datenbank-Engines und Datentypen, um unterschiedlichen Anforderungen gerecht zu werden.
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung des ORM-Frameworks SQLAlchemy in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!