Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Secara otomatis menghasilkan model PynamoDB dan fungsi CRUD untuk Amazon DynamoDB dengan menggunakan aplikasi Python
Vijit Vashishtha, Dheeraj Alimchandani, dan Dhananjay Karanjkar, Amazon Web Services
Ringkasan
Adalah umum untuk meminta entitas dan membuat, membaca, memperbarui, dan menghapus (CRUD) fungsi operasi untuk menjalankan operasi database Amazon DynamoDB secara efisien. PynamoDB adalah antarmuka berbasis Python yang mendukung Python 3. Ini juga menyediakan fitur seperti dukungan untuk transaksi Amazon DynamoDB, serialisasi nilai atribut otomatis dan deserialisasi, dan kompatibilitas dengan kerangka kerja Python umum, seperti Flask dan Django. Pola ini membantu pengembang bekerja dengan Python dan DynamoDB dengan menyediakan perpustakaan yang merampingkan pembuatan otomatis model PynamoDB dan fungsi operasi CRUD. Meskipun menghasilkan fungsi CRUD penting untuk tabel database, ia juga dapat merekayasa balik model PynamoDB dan fungsi CRUD dari tabel Amazon DynamoDB. Pola ini dirancang untuk menyederhanakan operasi database dengan menggunakan aplikasi berbasis Python.
Berikut ini adalah fitur utama dari solusi ini:
Skema JSON ke model PynamoDB - Secara otomatis menghasilkan model PynamodB dengan Python dengan mengimpor file skema JSON.
Pembuatan fungsi CRUD - Secara otomatis menghasilkan fungsi untuk melakukan operasi CRUD pada tabel DynamoDB.
Rekayasa balik dari DynamoDB - Gunakan pynamoDB object-relational mapping (ORM) untuk merekayasa balik model PynamoDB dan fungsi CRUD untuk tabel Amazon DynamoDB yang ada.
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS
Jinja2 versi 3.1.2 atau yang lebih baru, diunduh dan diinstal
Tabel Amazon DynamoDB yang ingin Anda hasilkan ORM
AWS Command Line Interface (AWS CLI), diinstal dan dikonfigurasi
Arsitektur
Tumpukan teknologi target
Skrip JSON
Aplikasi Python
Model PynamoDB
Contoh basis data Amazon DynamoDB
Arsitektur target

Anda membuat file skema JSON masukan. File skema JSON ini mewakili atribut dari tabel DynamoDB masing-masing yang Anda ingin membuat model PynamoDB dari dan fungsi CRUD untuk. Ini berisi tiga kunci penting berikut:
name—Nama tabel DynamoDB target.region— Wilayah AWS Tempat tabel dihostingattributesAtribut yang merupakan bagian dari tabel target, seperti kunci partisi (juga dikenal sebagai atribut hash), kunci sortir, indeks sekunder lokal, indeks sekunderglobal, dan atribut non-kunci apa pun. Alat ini mengharapkan skema input hanya menyediakan atribut non-kunci karena aplikasi mengambil atribut kunci langsung dari tabel target. Untuk contoh cara menentukan atribut dalam file skema JSON, lihat bagian Informasi tambahan dari pola ini.
Jalankan aplikasi Python dan berikan file skema JSON sebagai masukan.
Aplikasi Python membaca file skema JSON.
Aplikasi Python terhubung ke tabel DynamoDB untuk mendapatkan skema dan tipe data. Aplikasi ini menjalankan operasi describe_table
dan mengambil atribut kunci dan indeks untuk tabel. Aplikasi Python menggabungkan atribut dari file skema JSON dan tabel DynamoDB. Ini menggunakan mesin template Jinja untuk menghasilkan model PynamoDB dan fungsi CRUD yang sesuai.
Anda mengakses model PynamoDB untuk melakukan operasi CRUD pada tabel DynamoDB.
Alat
Layanan AWS
Amazon DynamoDB adalah layanan database NoSQL yang dikelola sepenuhnya yang menyediakan kinerja yang cepat, dapat diprediksi, dan dapat diskalakan.
Alat-alat lainnya
Jinja
adalah mesin templating extensible yang mengkompilasi template ke dalam kode Python yang dioptimalkan. Pola ini menggunakan Jinja untuk menghasilkan konten dinamis dengan menyematkan placeholder dan logika dalam template. PynamoDB
adalah antarmuka berbasis Python untuk Amazon DynamoDB. Python adalah bahasa
pemrograman komputer tujuan umum.
Repositori kode
Kode untuk pola ini tersedia dalam model PynamoDB yang GitHub dihasilkan otomatis
Controller paket
Paket Python controller berisi logika aplikasi utama yang membantu menghasilkan model PynamoDB dan fungsi CRUD. Ini berisi yang berikut:
input_json_validator.py- Skrip Python ini memvalidasi file skema JSON masukan dan membuat objek Python yang berisi daftar tabel DynamoDB target dan atribut yang diperlukan untuk masing-masing.dynamo_connection.py— Skrip ini membuat koneksi ke tabel DynamoDB dan menggunakan operasi untuk mengekstrak atributdescribe_tableyang diperlukan untuk membuat model PynamoDB.generate_model.py- Script ini berisi kelas PythonGenerateModelyang menciptakan model PynamoDB berdasarkan file skema JSON masukan dan operasi.describe_tablegenerate_crud.py— Untuk tabel DynamoDB yang didefinisikan dalam file skema JSON, skrip ini menggunakanGenerateCrudoperasi untuk membuat kelas Python.
Template
Direktori Python ini berisi template Jinja berikut:
model.jinja- Template Jinja ini berisi ekspresi template untuk menghasilkan skrip model PynamoDB.crud.jinja- Template Jinja ini berisi ekspresi template untuk menghasilkan skrip fungsi CRUD.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kloning repositori. | Masukkan perintah berikut untuk mengkloning model PynamoDB yang dihasilkan otomatis dan repositori fungsi CRUD
| Pengembang aplikasi |
Siapkan lingkungan Python. |
| Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Ubah file skema JSON. |
| Pengembang aplikasi |
Jalankan aplikasi Python. | Masukkan perintah berikut untuk menghasilkan model PynamoDB dan fungsi CRUD,
| Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Verifikasi model PynamodB yang dihasilkan. |
| Pengembang aplikasi |
Verifikasi fungsi CRUD yang dihasilkan. |
| Pengembang aplikasi |
Sumber daya terkait
Meningkatkan akses data dengan indeks sekunder (dokumentasi DynamoDB)
Informasi tambahan
Contoh atribut untuk file skema JSON
[ { "name": "test_table", "region": "ap-south-1", "attributes": [ { "name": "id", "type": "UnicodeAttribute" }, { "name": "name", "type": "UnicodeAttribute" }, { "name": "age", "type": "NumberAttribute" } ] } ]