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.
pip install sqlalchemy pip install mysql-connector-python
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.
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.
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!