So implementieren Sie Datenbankverbindungen und Transaktionsverarbeitung in FastAPI

PHPz
Freigeben: 2023-07-30 11:45:13
Original
2514 Leute haben es durchsucht

So implementieren Sie Datenbankverbindungen und Transaktionsverarbeitung in FastAPI

Einführung:
Mit der rasanten Entwicklung von Webanwendungen sind Datenbankverbindungen und Transaktionsverarbeitung zu einem sehr wichtigen Thema geworden. FastAPI ist ein leistungsstarkes Python-Webframework, das bei Entwicklern wegen seiner Geschwindigkeit und Benutzerfreundlichkeit beliebt ist. In diesem Artikel stellen wir vor, wie Sie Datenbankverbindungen und Transaktionen in FastAPI implementieren, um Sie beim Erstellen zuverlässiger und effizienter Webanwendungen zu unterstützen.

Teil Eins: Datenbankverbindung
In FastAPI können verschiedene Datenbankverbindungstools verwendet werden, wie zum Beispiel SQLAlchemy und Tortoise-ORM. Zur Veranschaulichung verwenden wir SQLAlchemy als Beispiel.

  1. SQLAlchemy und MySQL-Treiber installieren
    Zuerst müssen wir die SQLAlchemy-Bibliothek und den entsprechenden MySQL-Treiber installieren. Sie können es mit dem folgenden Befehl installieren:
pip install sqlalchemy
pip install mysql-connector-python
Nach dem Login kopieren
  1. Datenbankverbindung erstellen
    In der FastAPI-Anwendung können wir eine Datenbankverbindung in der Hauptanwendung erstellen und diese in den Routenhandler einfügen. Hier ist ein Beispielcode:
from fastapi import Depends, FastAPI
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm.session import Session

app = FastAPI()

SQLALCHEMY_DATABASE_URL = "mysql+mysqlconnector://user:password@localhost/db_name"

engine = create_engine(
    SQLALCHEMY_DATABASE_URL,
    pool_size=10,
    max_overflow=20
)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()

async def get_db() -> Session:
    try:
        db = SessionLocal()
        yield db
    finally:
        db.close()
Nach dem Login kopieren

Im obigen Code erstellen wir zunächst die URL der Datenbankverbindung und verwenden dann die Funktion „create_engine“ von SQLAlchemy, um die Datenbank-Engine zu erstellen. Als nächstes definieren wir eine SessionLocal-Klasse zur Verwaltung von Datenbanksitzungen. Schließlich erstellen wir eine Abhängigkeitsfunktion get_db, die eine Datenbanksitzungsinstanz zur Verwendung in jedem Anforderungshandler zurückgibt.

Teil 2: Transaktionsverarbeitung
In FastAPI kann die Transaktionsverarbeitung verwendet werden, um die Atomizität und Konsistenz von Datenbankoperationen sicherzustellen. Nachfolgend finden Sie einige Beispielcodes, die die Verwendung von Transaktionen mit FastAPI demonstrieren.

  1. Injizieren der Datenbanksitzung mithilfe von Abhängigkeiten
    Wir werden weiterhin die Abhängigkeitsfunktion get_db verwenden, die wir zuvor in diesem Beispiel erstellt haben, und die Datenbanksitzung in den Routenhandler einfügen.
from fastapi import Depends, FastAPI
from sqlalchemy.orm import Session
from .models import User
from .crud import create_user
from .database import get_db

app = FastAPI()

@app.post("/users/")
async def create_user_handler(user: User, db: Session = Depends(get_db)):
    return create_user(db=db, user=user)
Nach dem Login kopieren

Im obigen Code haben wir einen Routenhandler create_user_handler definiert, der ein Benutzerobjekt und eine Datenbanksitzung als Parameter akzeptiert. In diesem Handler rufen wir eine Funktion namens create_user auf, die einen neuen Benutzer in der Datenbank erstellt.

  1. Transaktionsverarbeitung implementieren
    Das Folgende ist der Code einer Beispielfunktion „create_user“, der zeigt, wie die Transaktionsverarbeitung in einer Datenbanksitzung verwendet wird:
from sqlalchemy.orm import Session
from .models import User

def create_user(db: Session, user: User):
    try:
        db.begin()
        db.add(user)
        db.commit()
        db.refresh(user)
        return user
    except:
        db.rollback()
        raise
Nach dem Login kopieren

Im obigen Code starten wir zunächst eine Transaktion mit db.begin( ) Stellungnahme . Anschließend fügen wir das Benutzerobjekt mithilfe der db.add()-Anweisung zur Datenbanksitzung hinzu. Als nächstes übergeben wir die Transaktion mithilfe der db.commit()-Anweisung an die Datenbank. Wenn während des Festschreibungsprozesses ein Fehler auftritt, verwenden wir die Anweisung db.rollback(), um die Transaktion zurückzusetzen. Abschließend aktualisieren wir das Benutzerobjekt mit der Anweisung db.refresh(), um sicherzustellen, dass es den in der Datenbank generierten Primärschlüsselwert enthält.

Fazit:
In diesem Artikel haben wir vorgestellt, wie man Datenbankverbindungen und Transaktionsverarbeitung in FastAPI implementiert. Wir haben zuerst die Datenbankverbindung mit SQLAlchemy erstellt und dann die Abhängigkeitsfunktion verwendet, um die Datenbanksitzung in den Routenhandler einzufügen. Als Nächstes haben wir gezeigt, wie Transaktionen innerhalb einer Datenbanksitzung verwendet werden, um die Atomizität und Konsistenz von Datenbankoperationen zu gewährleisten. Durch das Erlernen und Üben dieser Techniken werden Sie in der Lage sein, zuverlässige und effiziente Webanwendungen zu erstellen.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Datenbankverbindungen und Transaktionsverarbeitung in FastAPI. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!