Cara menggunakan perpustakaan ORM untuk manipulasi data dalam FastAPI

王林
Lepaskan: 2023-07-30 17:00:41
asal
2777 orang telah melayarinya

Cara menggunakan perpustakaan ORM untuk operasi data dalam FastAPI

Pengenalan:
FastAPI ialah rangka kerja web moden berdasarkan Python Reka bentuknya diilhamkan oleh Starlette dan Pydantic Ia adalah rangka kerja berprestasi tinggi, terutamanya sesuai untuk membina pantas. Perkhidmatan RESTful API boleh skala dan berprestasi. Dalam FastAPI, dengan bantuan perpustakaan ORM (Object Relational Mapping), kami boleh melaksanakan operasi pangkalan data dengan lebih mudah. Artikel ini akan membimbing anda cara menggunakan perpustakaan ORM untuk manipulasi data dalam FastAPI dan memberikan beberapa contoh kod.

1. Pengenalan kepada perpustakaan ORM
ORM (Pemetaan Perhubungan Objek) ialah teknologi yang memetakan data dalam pangkalan data kepada objek. Pustaka ORM membenarkan pembangun mengendalikan pangkalan data dengan mentakrifkan model objek tanpa terus menulis pernyataan SQL. Dalam FastAPI, perpustakaan ORM yang biasa digunakan termasuk SQLAlchemy, Peewee, dsb. Artikel ini menggunakan SQLAlchemy sebagai contoh untuk menggambarkan.

2. Pasang dan konfigurasikan SQLAlchemy
Sebelum menggunakan SQLAlchemy, kita perlu memasang perpustakaan SQLAlchemy terlebih dahulu. Ia boleh dipasang melalui arahan berikut:

pip install sqlalchemy
Salin selepas log masuk

Selepas pemasangan selesai, kita perlu menetapkan konfigurasi sambungan pangkalan data. Dalam FastAPI, anda boleh menambah kod berikut pada fail main.py:

from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base, sessionmaker

SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db"
engine = create_engine(SQLALCHEMY_DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

Base = declarative_base()
Salin selepas log masuk

Dalam kod di atas, kami mencipta pangkalan data SQLite dan menentukan SessionLocal untuk mencipta sesi pangkalan data. SQLALCHEMY_DATABASE_URL ialah URL sambungan pangkalan data.

3. Tentukan model data
Sebelum menggunakan ORM untuk operasi data, kita perlu menentukan model data. Model data boleh ditakrifkan dalam fail models.py. Ambil contoh model pengguna sebagai contoh. Dalam model data, kita boleh menentukan jenis setiap medan, dsb.

4. Cipta jadual data

Sebelum menggunakan ORM untuk operasi data, kita perlu mencipta jadual pangkalan data yang sepadan. Anda boleh menambah kod berikut pada fail main.py:

from sqlalchemy import Column, Integer, String
from database import Base

class User(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True, index=True)
    name = Column(String(50), unique=True, index=True)
    email = Column(String(50), unique=True, index=True)
    password = Column(String(100))
Salin selepas log masuk

Kod di atas akan mencipta jadual yang sepadan dengan semua model data yang ditentukan dalam pangkalan data.

5. Contoh operasi data

Mengambil model pengguna sebagai contoh, kami akan memberikan beberapa contoh operasi data biasa.


    Tanya semua pengguna
  1. Base.metadata.create_all(bind=engine)
    Salin selepas log masuk

    Dalam kod di atas, kami menanyakan semua data pengguna dan mengembalikannya.

  2. Tanya pengguna tunggal
  3. from sqlalchemy.orm import Session
    from . import models
    
    def get_users(db: Session):
     return db.query(models.User).all()
    Salin selepas log masuk

    Dalam kod di atas, kami menanyakan data pengguna tunggal mengikut id pengguna dan mengembalikannya.

  4. Cipta pengguna
  5. from sqlalchemy.orm import Session
    from . import models
    
    def get_user_by_id(db: Session, user_id: int):
     return db.query(models.User).filter(models.User.id == user_id).first()
    Salin selepas log masuk

    Dalam kod di atas, kami menyimpan data pengguna yang masuk ke pangkalan data dan mengembalikannya.

  6. Kemas kini pengguna
  7. from sqlalchemy.orm import Session
    from . import models, schemas
    
    def create_user(db: Session, user: schemas.UserCreate):
     hashed_password = hashlib.sha256(user.password.encode()).hexdigest()
     db_user = models.User(name=user.name, email=user.email, password=hashed_password)
     db.add(db_user)
     db.commit()
     db.refresh(db_user)
     return db_user
    Salin selepas log masuk

    Dalam kod di atas, kami menyimpan data kemas kini yang masuk ke pangkalan data melalui id pengguna.

  8. Padam Pengguna
  9. from sqlalchemy.orm import Session
    from . import models, schemas
    
    def update_user(db: Session, user_id: int, user: schemas.UserUpdate):
     db_user = db.query(models.User).filter(models.User.id == user_id).first()
     if user.name:
         db_user.name = user.name
     if user.email:
         db_user.email = user.email
     if user.password:
         db_user.password = hashlib.sha256(user.password.encode()).hexdigest()
     db.commit()
     db.refresh(db_user)
     return db_user
    Salin selepas log masuk

    Dalam kod di atas, kami memadam data pengguna daripada pangkalan data mengikut id pengguna.

    Kesimpulan: Melalui contoh kod di atas, kita dapat melihat bahawa agak mudah untuk menggunakan perpustakaan ORM untuk operasi data dalam FastAPI. Dengan bantuan perpustakaan ORM, kita tidak perlu menulis pernyataan SQL secara langsung, tetapi boleh melakukan operasi pangkalan data melalui model objek, menjadikan kod lebih ringkas dan boleh dibaca. Saya harap artikel ini akan membantu anda menggunakan perpustakaan ORM untuk operasi data dalam projek FastAPI anda.

    Atas ialah kandungan terperinci Cara menggunakan perpustakaan ORM untuk manipulasi data dalam FastAPI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan