Rumah >pembangunan bahagian belakang >Tutorial Python >Penjelasan terperinci tentang rangka kerja ORM SQLAlchemy dalam Python

Penjelasan terperinci tentang rangka kerja ORM SQLAlchemy dalam Python

PHPz
PHPzasal
2023-06-10 20:58:582415semak imbas

SQLAlchemy ialah perpustakaan Python SQL yang berkuasa yang menyediakan abstraksi peringkat tinggi untuk beroperasi pada pangkalan data. Dengan menggunakan rangka kerja ORM (Pemetaan Perhubungan Objek) SQLAlchemy, kami boleh mengendalikan pangkalan data dengan mudah dalam cara berorientasikan objek dalam program tanpa menulis pernyataan SQL yang kompleks dan berurusan dengan butiran asas seperti sambungan pangkalan data dan transaksi. Dalam artikel ini, kami akan memperkenalkan rangka kerja ORM SQLAlchemy secara mendalam dan meneroka cara menggunakannya untuk melengkapkan pelbagai operasi pangkalan data.

1 Pasang dan konfigurasikan SQLAlchemy

Sebelum kita mula menggunakan SQLAlchemy, kita perlu memasangnya terlebih dahulu. Anda boleh menggunakan pengurus pakej seperti pip atau conda untuk memasang SQLAlchemy:

pip install sqlalchemy

Selepas pemasangan selesai, kami boleh menggunakan perpustakaan SQLAlchemy dalam program Python. Sebelum mula menggunakannya, kita perlu memulakan enjin SQLAlchemy dan metadata dalam program. Ini boleh dicapai menggunakan kod berikut:

from sqlalchemy import create_engine, MetaData

engine = create_engine('数据库连接字符串')
metadata = MetaData(bind=engine)

Di mana, 'rentetan sambungan pangkalan data' perlu digantikan dengan rentetan sambungan pangkalan data sebenar, contohnya:

engine = create_engine('mysql+pymysql://root:password@localhost/test')

Pangkalan data MySQL digunakan di sini , dan nama pengguna ialah akar Kata laluan ialah kata laluan, dan pangkalan data yang disambungkan dinamakan ujian.

2. Tentukan jadual pangkalan data dan pemetaan ORM

Sebelum beroperasi dengan rangka kerja ORM SQLAlchemy, kita perlu mentakrifkan struktur jadual pangkalan data terlebih dahulu. Ini boleh dicapai dengan mentakrifkan kelas Python. Contohnya:

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}')>"

Dalam contoh ini, kami mentakrifkan kelas Pengguna, yang sepadan dengan jadual pangkalan data bernama 'pengguna'. Jadual ini mengandungi empat medan: id, nama, umur dan e-mel. Dengan mentakrifkan atribut ini dalam kelas Python, kami mewujudkan hubungan pemetaan, dan setiap lajur dalam jadual sepadan dengan atribut dalam kelas Python. Anda boleh menggunakan fungsi __repr__ untuk mengeluarkan sifat sesuatu objek dengan mudah.

Untuk memetakan kelas Pengguna dan jadual pangkalan data, kita juga perlu mentakrifkan objek Metadata bagi jadual data. Objek ini mengandungi beberapa maklumat yang menerangkan struktur jadual data, seperti perwakilan, nama lajur, jenis data, kekangan, dsb. Pada masa yang sama, kita juga perlu menggunakan fungsi sessionmaker untuk mencipta kilang sesi untuk mencipta objek sesi pangkalan data:

from sqlalchemy.orm import sessionmaker

Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)

Di sini, kami menggunakan kaedah create_all() untuk memetakan semua kelas yang diwarisi daripada kelas Base . Objek Sesi ialah fungsi kilang yang digunakan untuk mencipta sesi pangkalan data, yang perlu diikat kepada enjin pangkalan data.

3. Gunakan ORM untuk operasi pangkalan data

Selepas mentakrifkan kelas dan objek metadata jadual data, kita boleh mula menggunakan ORM untuk operasi pangkalan data. ORM SQLAlchemy menyediakan satu siri API yang boleh digunakan untuk operasi CRUD dan operasi pertanyaan. Kami akan memperkenalkan operasi ini secara berasingan di bawah.

  1. Tambah data

Salah satu operasi yang paling biasa digunakan dalam ORM ialah menambah data. Ini boleh dicapai dengan mencipta objek jadual data dan menambahkannya pada sesi.

from sqlalchemy.orm import Session

user = User(name='Alice', age=20, email='alice@example.com')
session = Session()
session.add(user)
session.commit()

Dalam contoh ini, kami mencipta objek Pengguna dan menambahkannya pada sesi. Akhir sekali, data diserahkan kepada pangkalan data dengan memanggil kaedah commit().

  1. Ubah suai data

Gunakan rangka kerja ORM untuk mengubah suai data Anda boleh menggunakan kaedah rollback() dan commit() untuk melaksanakan operasi transaksi.

session = Session()
user = session.query(User).filter_by(name='Alice').first()
if user:
    user.age = 21
    session.rollback()
    session.commit()

Dalam contoh ini, kami mula-mula mendapatkan rekod pengguna bernama 'Alice' daripada pangkalan data menggunakan kaedah query() bagi objek sesi. Kemudian atribut umur pengguna diubah suai dan kaedah rollback() dipanggil Operasi ini akan membuat asal semua operasi kemas kini yang berlaku dalam pangkalan data selepas pengubahsuaian. Akhir sekali, memanggil kaedah commit() akan menyerahkan data yang diubah suai ke pangkalan data.

  1. Memadam data

Ia juga sangat mudah untuk menggunakan rangka kerja ORM untuk memadam data Anda boleh memadamkan data secara langsung daripada balasan.

session = Session()
user = session.query(User).filter_by(name='Alice').first()
if user:
    session.delete(user)
    session.commit()

Dalam contoh ini, kami mula-mula menggunakan kaedah query() untuk mendapatkan rekod pengguna bernama 'Alice' daripada pangkalan data. Kemudian padamkan rekod ini daripada sesi dan serahkan operasi pemadaman ke pangkalan data melalui kaedah commit().

  1. Data pertanyaan

Anda boleh menggunakan kaedah query() untuk melaksanakan operasi pertanyaan dan menggunakan kaedah filter_by() untuk menentukan syarat pertanyaan. Selepas pertanyaan selesai, anda boleh menggunakan kaedah all() untuk mendapatkan semua hasil, atau anda boleh menggunakan kaedah first() untuk mendapatkan hasil pertama.

session = Session()
users = session.query(User).all()
for user in users:
    print(user)

Dalam contoh ini, kami mula-mula menggunakan kaedah query() untuk mendapatkan semua rekod daripada jadual Pengguna. Kemudian ulangi semua hasil dan keluarkan atribut.

Selain pertanyaan ringkas, kami juga boleh menggunakan beberapa kaedah pertanyaan lanjutan, seperti menggunakan kaedah order_by() untuk mengisih mengikut lajur tertentu atau menggunakan kaedah limit() untuk mengehadkan bilangan hasil yang dikembalikan .

users = session.query(User).order_by(User.age.desc()).limit(10).all()

Di sini, kami mendapat 10 rekod teratas daripada jadual Pengguna dalam susunan menurun mengikut lajur umur.

4. Ringkasan

SQLAlchemy ialah perpustakaan Python SQL yang berkuasa, dan rangka kerja ORMnya menyediakan abstraksi peringkat tinggi untuk pangkalan data pengendalian. Dengan mentakrifkan kelas, objek metadata dan kilang sesi, kami boleh melaksanakan pelbagai operasi pangkalan data dengan mudah. SQLAlchemy menyediakan banyak API kaya yang boleh digunakan untuk operasi CRUD, operasi pertanyaan, operasi transaksi, dsb. Pada masa yang sama, ia juga menyokong pelbagai enjin pangkalan data dan jenis data untuk memenuhi pelbagai keperluan yang berbeza.

Atas ialah kandungan terperinci Penjelasan terperinci tentang rangka kerja ORM SQLAlchemy dalam Python. 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