Akses Pangkalan Data Tak Segerak
Terokai pemacu pangkalan data dan ORM tak segerak seperti `asyncpg` dan `SQLModel` untuk operasi pangkalan data yang tidak menyekat.
Akses Pangkalan Data Tak Segerak ialah pelajaran Kem Intensif Pembangunan Bahagian Belakang FastAPI percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Kem Intensif Pembangunan Bahagian Belakang FastAPI, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kem Intensif Pembangunan Bahagian Belakang FastAPI merangkumi sejumlah 4 pelajaran.
Mengapa Capaian DB Tak Segerak?
Apabila membina aplikasi web berprestasi tinggi, khususnya dengan rangka kerja seperti FastAPI, operasi pangkalan data sering menjadi kesesakan. Panggilan pangkalan data tradisional bersifat "menyekat", iaitu aplikasi anda menunggu pangkalan data memberikan respons sebelum meneruskan kerja.
Capaian pangkalan data tak segerak membolehkan aplikasi anda melaksanakan tugas lain sementara menunggu pangkalan data, sekali gus menghalang API anda daripada tidak responsif apabila beban tinggi. Hal ini penting untuk kebolehskalaan!
Panggilan DB Segerak berbanding Tak Segerak
Bayangkan sebuah restoran yang segala urusannya dikendalikan oleh seorang cef. Jika pelanggan memesan hidangan yang kompleks (pertanyaan pangkalan data), cef itu menghentikan semua kerja lain sehingga hidangan tersebut siap. Ini ialah I/O segerak.
Dalam persediaan tak segerak, cef itu memulakan hidangan kompleks, kemudian terus menyediakan hidangan yang lebih ringkas atau menerima pesanan baharu sementara hidangan kompleks dimasak di latar belakang. Apabila hidangan kompleks siap, cef itu mengambilnya. Pendekatan tanpa sekatan ini meningkatkan kecekapan!
Kenali asyncpg: Pemacu Tak Segerak
Untuk PostgreSQL, pemacu tak segerak pilihan dalam Python ialah asyncpg. Ia merupakan pustaka berprestasi tinggi yang direka khusus untuk berfungsi dengan rangka kerja asyncio Python.
- Pantas: Ditulis sebahagiannya dalam C untuk kelajuan.
- Tak Segerak: Sepenuhnya tanpa sekatan.
- Langsung: Menyediakan antara muka terus kepada PostgreSQL.
Ia sering digunakan sebagai pemacu asas untuk ORM tak segerak atau apabila anda memerlukan kawalan terperinci.
asyncpg dalam Tindakan
Mari lihat contoh asas untuk menyambung kepada pangkalan data PostgreSQL dan menjalankan pertanyaan mudah menggunakan asyncpg. Ingat untuk menggantikan kelayakan ruang letak dengan kelayakan anda sendiri!
import asyncio
import asyncpg
async def main():
conn = None
try:
conn = await asyncpg.connect(user='postgres', password='mysecretpassword',
database='testdb', host='localhost')
print("Connected to PostgreSQL!")
# Execute a query
result = await conn.fetchval('SELECT 1 + 1')
print(f"Query result: {result}") # Should be 2
except Exception as e:
print(f"Error: {e}")
finally:
if conn:
await conn.close()
print("Connection closed.")
if __name__ == "__main__":
asyncio.run(main())Menunggu Panggilan Pangkalan Data
Dalam contoh sebelumnya, anda melihat kata kunci await sebelum asyncpg.connect() dan conn.fetchval(). Hal ini penting untuk operasi tak segerak.
awaitmemberitahu Python: "Operasi ini mungkin mengambil masa, jadi berhenti seketika di sini dan benarkan tugas lain berjalan sementara itu."- Apabila operasi pangkalan data selesai, tugas itu bersambung semula dari tempat ia berhenti.
- Penungguan tanpa sekatan inilah yang menjadikan aplikasi FastAPI anda boleh diskalakan.
SQLModel: Kuasa ORM Tak Segerak
Walaupun asyncpg memberikan kawalan aras rendah, Pemetaan Objek-Relasi (ORM) memudahkan interaksi pangkalan data dengan memetakan jadual pangkalan data kepada objek Python. SQLModel ialah ORM moden yang mengutamakan operasi tak segerak dan dibina berasaskan:
- Pydantic: Untuk pengesahan dan pensirian data.
- SQLAlchemy: Kit alat SQL Python yang berkuasa dan matang.
Ia membolehkan anda mentakrifkan model sekali dan menggunakannya untuk kedua-dua permintaan/respons API serta skema pangkalan data!
Menyediakan SQLModel untuk Operasi Tak Segerak
Untuk menggunakan SQLModel secara tak segerak, anda memerlukan enjin pangkalan data tak segerak. Lazimnya, ini melibatkan penggunaan pemacu tak segerak seperti asyncpg (yang boleh digunakan oleh SQLAlchemy melalui asyncio). Berikut ialah cara anda menyediakan enjin tersebut:
from sqlmodel import create_engine, SQLModel
import asyncio
# Replace with your actual async PostgreSQL connection string
# The 'postgresql+asyncpg' part tells SQLAlchemy to use asyncpg
DATABASE_URL = "postgresql+asyncpg://postgres:mysecretpassword@localhost/testdb"
async def main():
engine = create_engine(DATABASE_URL, echo=True)
print("Async SQLModel engine created.")
# In a real app, you'd usually create tables here
# async with engine.begin() as conn:
# await conn.run_sync(SQLModel.metadata.create_all)
# Just demonstrating engine creation for this example
await engine.dispose()
print("Engine disposed.")
if __name__ == "__main__":
asyncio.run(main())SQLModel Pertama Anda
Mentakrifkan model dalam SQLModel amat intuitif. Anda mewarisi daripada SQLModel dan menggunakan pengisytiharan medan yang menyerupai Pydantic. Takrifan tunggal ini menghasilkan kedua-dua skema jadual pangkalan data dan skema pengesahan data API anda!
from typing import Optional
from sqlmodel import Field, SQLModel
class Hero(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
name: str = Field(index=True)
secret_name: str
age: Optional[int] = Field(default=None, index=True)
# This model can now be used with FastAPI for request bodies
# and with SQLAlchemy for database interactions.
print("Hero model defined successfully!")CRUD Tak Segerak dengan SQLModel
Sekarang mari lakukan operasi Cipta dan Baca yang mudah menggunakan model Hero serta enjin tak segerak kita. Kami akan menggunakan AsyncSession daripada ORM SQLAlchemy untuk interaksi pangkalan data.
from typing import Optional
from sqlmodel import Field, SQLModel, create_engine, Session, select
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
from sqlalchemy.orm import sessionmaker
import asyncio
DATABASE_URL = "postgresql+asyncpg://postgres:mysecretpassword@localhost/testdb"
async_engine = create_async_engine(DATABASE_URL, echo=False)
AsyncSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=async_engine, class_=AsyncSession)
class Hero(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
name: str = Field(index=True)
secret_name: str
age: Optional[int] = Field(default=None, index=True)
async def create_db_and_tables():
async with async_engine.begin() as conn:
await conn.run_sync(SQLModel.metadata.create_all)
print("Database tables created/updated.")
async def create_hero(hero: Hero):
async with AsyncSessionLocal() as session:
session.add(hero)
await session.commit()
await session.refresh(hero)
print(f"Created hero: {hero.name} (ID: {hero.id})")
return hero
async def get_heroes():
async with AsyncSessionLocal() as session:
statement = select(Hero)
results = await session.execute(statement)
heroes = results.scalars().all()
print("\nAll Heroes:")
for hero in heroes:
print(f"- {hero.name} (Age: {hero.age})")
return heroes
async def main():
await create_db_and_tables()
hero_1 = Hero(name="Deadpond", secret_name="Dive Wilson", age=28)
hero_2 = Hero(name="Spider-Boy", secret_name="Pedro Parqueador")
hero_3 = Hero(name="Rusty-Man", secret_name="Tommy Sharp", age=48)
await create_hero(hero_1)
await create_hero(hero_2)
await create_hero(hero_3)
await get_heroes()
await async_engine.dispose()
if __name__ == "__main__":
asyncio.run(main())Semakan DB Tak Segerak
Anda telah mempelajari kepentingan capaian pangkalan data tak segerak dan meneroka alat seperti asyncpg serta SQLModel. Mari uji pemahaman anda!
Imbas Kembali: DB Tak Segerak untuk Skala
Syabas! Anda telah berjaya meneroka capaian pangkalan data tak segerak.
- Kami memahami sebab I/O tanpa sekatan penting untuk aplikasi FastAPI berprestasi tinggi.
- Kami memperkenalkan
asyncpgsebagai pemacu PostgreSQL tak segerak aras rendah. - Kami mempelajari
SQLModel, ORM yang mengutamakan operasi tak segerak dan menggabungkan Pydantic dengan SQLAlchemy. - Kami melihat contoh praktikal untuk menyediakan dan melaksanakan operasi CRUD menggunakan alat-alat ini.
Menguasai interaksi pangkalan data tak segerak ialah langkah penting untuk membina perkhidmatan bahagian belakang yang benar-benar boleh diskalakan dan responsif!
Pelajari Kem Intensif Pembangunan Bahagian Belakang FastAPI 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
- 21
- Pelajaran
- 84
Soalan Lazim
Adakah pelajaran “Akses Pangkalan Data Tak Segerak” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Kem Intensif Pembangunan Bahagian Belakang FastAPI, termasuk “Akses Pangkalan Data Tak Segerak”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Kem Intensif Pembangunan Bahagian Belakang FastAPI merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Akses Pangkalan Data Tak Segerak”?
Terokai pemacu pangkalan data dan ORM tak segerak seperti `asyncpg` dan `SQLModel` untuk operasi pangkalan data yang tidak menyekat. Anda berlatih Kem Intensif Pembangunan Bahagian Belakang FastAPI 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 Kem Intensif Pembangunan Bahagian Belakang FastAPI?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Kem Intensif Pembangunan Bahagian Belakang FastAPI 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 2 daripada 4.
Berapa lamakah pelajaran “Akses Pangkalan Data Tak Segerak” 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 Kem Intensif Pembangunan Bahagian Belakang FastAPI ini?
Ya. Setiap pelajaran Kem Intensif Pembangunan Bahagian Belakang FastAPI 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
- Strategi Caching dengan Redis
- Akses Pangkalan Data Tak Segerak
- Pengimbangan Beban dan Pemantauan
- Tugas Latar Belakang dan Baris Gilir Kerja