Python Academy · Pelajaran

SQLAlchemy Core berbanding ORM

Fahami dua lapisan tersebut

Pelajaran 1 daripada 413 langkah

SQLAlchemy Core berbanding ORM ialah pelajaran Python Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Python Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Apakah SQLAlchemy?

SQLAlchemy ialah kit alat Python yang paling popular untuk bekerja dengan pangkalan data hubungan. Ia menawarkan dua lapisan: Teras dan ORM.

Anda memasangnya dengan pip install sqlalchemy.

from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
print('Engine:', engine)

Enjin

Kedua-dua lapisan bermula dengan Enjin, yang dicipta oleh create_engine(). Enjin ini mengurus kumpulan sambungan dan mengetahui cara berkomunikasi dengan pangkalan data khusus anda melalui URL.

from sqlalchemy import create_engine
engine = create_engine('sqlite:///app.db')
print('Dialect:', engine.dialect.name)

Dua Lapisan

Teras ialah kit alat ungkapan SQL: anda membina pertanyaan yang hampir sepadan dengan SQL.

ORM dibina di atas Teras dan memetakan kelas Python kepada jadual, supaya anda bekerja dengan objek dan bukannya baris.

# Core: think in tables and SQL expressions
# ORM: think in Python classes and objects
print('Core = SQL toolkit, ORM = object mapping')

Teras: Mentakrifkan Jadual

Dalam Teras, anda menerangkan jadual secara jelas menggunakan objek Table dan MetaData.

from sqlalchemy import MetaData, Table, Column, Integer, String
metadata = MetaData()
users = Table('users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String))
print('Table defined:', users.name)

Teras: Membina Pertanyaan

Teras membina pertanyaan dengan ungkapan Python seperti select() yang diterjemahkan terus kepada SQL.

from sqlalchemy import MetaData, Table, Column, Integer, String, select
metadata = MetaData()
users = Table('users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String))
stmt = select(users).where(users.c.name == 'Alice')
print(stmt)

ORM: Kelas Terpetakan

Dalam ORM, kelas Python mewakili sebuah jadual. Setiap atribut dipetakan kepada lajur. Anda membuat pertanyaan dan menyimpan objek, bukan baris mentah.

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str]
print('Mapped class:', User.__tablename__)

Bila Menggunakan Teras

Teras sesuai apabila anda mahukan kawalan terperinci terhadap SQL yang tepat, perlu memproses data secara pukal, atau menjalankan pertanyaan pelaporan yang kompleks apabila objek menambah beban tambahan.

# Core is great for:
# - bulk inserts/updates
# - complex analytical queries
# - close control over generated SQL
print('Core: control and performance')

Bila Menggunakan ORM

ORM sesuai untuk kod aplikasi biasa: anda memodelkan entiti perniagaan sebagai kelas, mendapatkan penjejakan perubahan dan menulis kurang kod rangka.

# ORM is great for:
# - application domain models
# - automatic change tracking
# - relationships between objects
print('ORM: productivity and clarity')

Kedua-duanya Berkongsi Enjin

Oleh sebab ORM dibina di atas Teras, kedua-duanya menggunakan Enjin dan kumpulan sambungan yang sama. Anda juga boleh menggabungkannya dalam satu aplikasi.

from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
# Core uses engine.connect()
# ORM uses a Session bound to the same engine
print('One engine powers both layers')

Mencipta Jadual

Dengan ORM, Base.metadata.create_all(engine) mengeluarkan pernyataan CREATE TABLE untuk semua kelas terpetakan.

from sqlalchemy import create_engine
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
    pass
class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
print('Tables created')

Memilih Lapisan

Kebanyakan aplikasi menggunakan ORM secara lalai untuk kerja harian, kemudian beralih kepada Teras untuk pertanyaan berat atau sangat ditala yang jarang diperlukan. Dengan mengetahui kedua-duanya, anda mendapat lebih banyak fleksibiliti.

# Rule of thumb:
# Start with the ORM. Use Core where you need raw power.
print('Default ORM, escape to Core when needed')

Semakan Ringkas

Uji pemahaman anda tentang kedua-dua lapisan.

Imbas Kembali

Anda telah mengenali seni bina SQLAlchemy.

  • Engine menggerakkan segala-galanya melalui create_engine()
  • Teras ialah kit alat ungkapan SQL untuk kawalan dan prestasi
  • ORM memetakan kelas kepada jadual untuk kod aplikasi yang produktif
  • Kedua-duanya berkongsi enjin yang sama dan boleh digabungkan
Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
76
Pelajaran
320

Soalan Lazim

Adakah pelajaran “SQLAlchemy Core berbanding ORM” percuma?

Ya — teks penuh “SQLAlchemy Core berbanding ORM” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Python Academy, tingkat taraf kepada CoddyKit PRO. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “SQLAlchemy Core berbanding ORM”?

Fahami dua lapisan tersebut Anda berlatih Python Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Python Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Python Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “SQLAlchemy Core berbanding ORM” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. SQLAlchemy Core berbanding ORM
  2. Mentakrifkan Model
  3. Membuat Pertanyaan dengan Session
  4. Hubungan dan Cantuman
← Kembali ke Python Academy