SQLAlkimia
Perangkat Python SQL dan Pemeta Relasional Objek
Perkenalan
SQLAlchemy adalah toolkit Python SQL dan Object Relational Mapper yang memberi pengembang aplikasi kekuatan penuh dan fleksibilitas SQL. SQLAlchemy menyediakan rangkaian lengkap pola persistensi tingkat perusahaan yang terkenal, dirancang untuk akses database yang efisien dan berkinerja tinggi, diadaptasi ke dalam bahasa domain Pythonic yang sederhana.
Fitur utama SQLAlchemy meliputi:
- ORM kekuatan industri, dibangun dari inti peta identitas, unit kerja, dan pola pemetaan data. Pola-pola ini memungkinkan persistensi objek secara transparan menggunakan sistem konfigurasi deklaratif. Model domain dapat dibangun dan dimanipulasi secara alami, dan perubahan disinkronkan dengan transaksi saat ini secara otomatis.
- Sistem kueri berorientasi relasional, memperlihatkan seluruh kemampuan SQL secara eksplisit, termasuk gabungan, subkueri, korelasi, dan hampir semua hal lainnya, dalam kaitannya dengan model objek. Menulis kueri dengan ORM menggunakan teknik komposisi relasional yang sama dengan yang Anda gunakan saat menulis SQL. Meskipun Anda dapat beralih ke SQL literal kapan saja, hal itu sebenarnya tidak diperlukan.
- Sistem pemuatan cepat yang komprehensif dan fleksibel untuk koleksi dan objek terkait. Koleksi di-cache dalam satu sesi, dan dapat dimuat pada akses individu, sekaligus menggunakan gabungan, atau berdasarkan kueri per koleksi di seluruh kumpulan hasil lengkap.
- Sistem konstruksi Core SQL dan lapisan interaksi DBAPI. SQLAlchemy Core terpisah dari ORM dan merupakan lapisan abstraksi database lengkap, dan mencakup bahasa ekspresi SQL berbasis Python yang dapat diperluas, metadata skema, pengumpulan koneksi, pemaksaan tipe, dan tipe kustom.
- Semua kendala utama dan asing diasumsikan bersifat komposit dan alami. Kunci utama bilangan bulat pengganti tentu saja masih menjadi norma, tetapi SQLAlchemy tidak pernah mengasumsikan atau melakukan hardcode pada model ini.
- Introspeksi dan pembangkitan basis data. Skema basis data dapat "dicerminkan" dalam satu langkah ke dalam struktur Python yang mewakili metadata basis data; struktur yang sama kemudian dapat langsung menghasilkan pernyataan CREATE - semuanya di dalam Inti, tidak bergantung pada ORM.
Filosofi SQLAlchemy:
- Basis data SQL semakin tidak berperilaku seperti kumpulan objek, semakin penting ukuran dan kinerja; koleksi objek semakin tidak berperilaku seperti tabel dan baris, semakin banyak abstraksi yang menjadi penting. SQLAlchemy bertujuan untuk mengakomodasi kedua prinsip ini.
- ORM tidak perlu menyembunyikan "R". Basis data relasional menyediakan fungsionalitas yang kaya dan berbasis kumpulan yang harus diekspos sepenuhnya. ORM SQLAlchemy menyediakan serangkaian pola terbuka yang memungkinkan pengembang membangun lapisan mediasi khusus antara model domain dan skema relasional, mengubah apa yang disebut masalah "impedansi relasional objek" menjadi memori yang jauh.
- Pengembang, dalam semua kasus, membuat semua keputusan mengenai desain, struktur, dan konvensi penamaan model objek serta skema relasional. SQLAlchemy hanya menyediakan sarana untuk mengotomatiskan pelaksanaan keputusan ini.
- Dengan SQLAlchemy, tidak ada yang namanya "ORM menghasilkan kueri yang buruk" - Anda tetap memegang kendali penuh atas struktur kueri, termasuk cara penggabungan diatur, cara subkueri dan korelasi digunakan, kolom apa yang diminta. Segala sesuatu yang dilakukan SQLAlchemy pada akhirnya merupakan hasil keputusan yang diprakarsai pengembang.
- Jangan gunakan ORM jika masalahnya tidak memerlukannya. SQLAlchemy terdiri dari komponen ORM Inti dan terpisah. Core menawarkan bahasa ekspresi SQL lengkap yang memungkinkan konstruksi Pythonic dari konstruksi SQL yang dirender langsung ke string SQL untuk database target, mengembalikan kumpulan hasil yang pada dasarnya adalah kursor DBAPI yang ditingkatkan.
- Transaksi harus menjadi norma. Dengan ORM SQLAlchemy, tidak ada yang masuk ke penyimpanan permanen sampai commit() dipanggil. SQLAlchemy mendorong aplikasi untuk menciptakan cara yang konsisten dalam menggambarkan awal dan akhir serangkaian operasi.
- Jangan pernah memberikan nilai literal dalam pernyataan SQL. Parameter terikat digunakan semaksimal mungkin, sehingga pengoptimal kueri dapat menyimpan rencana kueri dalam cache secara efektif dan menjadikan serangan injeksi SQL tidak menjadi masalah.
Dokumentasi
Dokumentasi terbaru ada di:
https://www.sqlalchemy.org/docs/
Instalasi / Persyaratan
Dokumentasi lengkap untuk instalasi ada di Instalasi.
Mendapatkan Bantuan/Pengembangan/Pelaporan Bug
Silakan merujuk ke Panduan Komunitas SQLAlchemy.
Kode Etik
Yang terpenting, SQLAlchemy sangat menekankan komunikasi yang sopan, bijaksana, dan konstruktif antara pengguna dan pengembang. Silakan lihat Kode Etik kami saat ini di Kode Etik.
Lisensi
SQLAlchemy didistribusikan di bawah lisensi MIT.