Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan sambungan pangkalan data dan pemprosesan transaksi dalam FastAPI

Bagaimana untuk melaksanakan sambungan pangkalan data dan pemprosesan transaksi dalam FastAPI

PHPz
PHPzasal
2023-07-30 11:45:132519semak imbas

Cara melaksanakan sambungan pangkalan data dan pemprosesan transaksi dalam FastAPI

Pengenalan:
Dengan perkembangan pesat aplikasi web, sambungan pangkalan data dan pemprosesan transaksi telah menjadi topik yang sangat penting. FastAPI ialah rangka kerja web Python berprestasi tinggi yang disukai oleh pembangun kerana kelajuan dan kemudahan penggunaannya. Dalam artikel ini, kami akan memperkenalkan cara melaksanakan sambungan pangkalan data dan transaksi dalam FastAPI untuk membantu anda membina aplikasi web yang boleh dipercayai dan cekap.

Bahagian Pertama: Sambungan Pangkalan Data
Dalam FastAPI, pelbagai alatan sambungan pangkalan data boleh digunakan, seperti SQLAlchemy dan Tortoise-ORM. Kami akan menggunakan SQLAlchemy sebagai contoh untuk menunjukkan.

  1. Pasang SQLAlchemy dan Pemacu MySQL
    Pertama, kita perlu memasang perpustakaan SQLAlchemy dan pemacu MySQL yang sepadan. Anda boleh memasangnya menggunakan arahan berikut:
pip install sqlalchemy
pip install mysql-connector-python
  1. Buat sambungan pangkalan data
    Dalam aplikasi FastAPI, kita boleh membuat sambungan pangkalan data dalam aplikasi utama dan menyuntiknya ke dalam pengendali laluan. Berikut ialah contoh kod:
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()

Dalam kod di atas, kami mula-mula mencipta URL sambungan pangkalan data, dan kemudian menggunakan fungsi create_engine SQLAlchemy untuk mencipta enjin pangkalan data. Seterusnya, kami mentakrifkan kelas SessionLocal untuk mengekalkan sesi pangkalan data. Akhir sekali, kami mencipta fungsi kebergantungan get_db yang akan mengembalikan contoh sesi pangkalan data untuk digunakan dalam setiap pengendali permintaan.

Bahagian 2: Pemprosesan Transaksi
Dalam FastAPI, pemprosesan transaksi boleh digunakan untuk memastikan atomicity dan konsistensi operasi pangkalan data. Di bawah ialah beberapa contoh kod yang menunjukkan cara menggunakan transaksi dengan FastAPI.

  1. Menyuntik sesi pangkalan data menggunakan dependencies
    Kami akan terus menggunakan fungsi kebergantungan get_db yang kami buat sebelum ini dalam contoh ini dan menyuntik sesi pangkalan data dalam pengendali laluan.
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)

Dalam kod di atas, kami telah menentukan pengendali laluan create_user_handler yang menerima objek pengguna dan sesi pangkalan data sebagai parameter. Dalam pengendali ini, kami memanggil fungsi yang dipanggil create_user yang akan mencipta pengguna baharu dalam pangkalan data.

  1. Melaksanakan pemprosesan transaksi
    Berikut ialah kod contoh fungsi create_user, yang menunjukkan cara menggunakan pemprosesan transaksi dalam sesi pangkalan data:
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

Dalam kod di atas, kami mula-mula memulakan transaksi menggunakan db.begin( ) kenyataan . Kami kemudian menambah objek pengguna pada sesi pangkalan data menggunakan pernyataan db.add(). Seterusnya, kami melakukan transaksi ke pangkalan data menggunakan pernyataan db.commit(). Jika ralat berlaku semasa proses komit, kami menggunakan pernyataan db.rollback() untuk melancarkan transaksi. Akhir sekali, kami menyegarkan objek pengguna menggunakan pernyataan db.refresh() untuk memastikan ia mengandungi nilai kunci utama yang dijana dalam pangkalan data.

Kesimpulan:
Dalam artikel ini, kami memperkenalkan cara melaksanakan sambungan pangkalan data dan pemprosesan transaksi dalam FastAPI. Kami mula-mula mencipta sambungan pangkalan data menggunakan SQLAlchemy dan kemudian menggunakan fungsi kebergantungan untuk menyuntik sesi pangkalan data ke dalam pengendali laluan. Seterusnya, kami menunjukkan cara menggunakan transaksi dalam sesi pangkalan data untuk menjamin atomicity dan konsistensi operasi pangkalan data. Dengan mempelajari dan mempraktikkan teknik ini, anda akan dapat membina aplikasi web yang boleh dipercayai dan cekap.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan sambungan pangkalan data dan pemprosesan transaksi dalam FastAPI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn