Secara otomatis menghasilkan model PynamoDB dan fungsi CRUD untuk Amazon DynamoDB dengan menggunakan aplikasi Python - AWS Prescriptive Guidance

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

Arsitektur

Tumpukan teknologi target

  • Skrip JSON

  • Aplikasi Python

  • Model PynamoDB

  • Contoh basis data Amazon DynamoDB

Arsitektur target

Menggunakan aplikasi Python untuk menghasilkan fungsi CRUD dan model PynamoDB dari tabel DynamoDB.
  1. 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:

  2. Jalankan aplikasi Python dan berikan file skema JSON sebagai masukan.

  3. Aplikasi Python membaca file skema JSON.

  4. 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.

  5. 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.

  6. 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 dan repositori fungsi CRUD. Repositori dibagi menjadi dua bagian utama: paket controller dan template.

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 atribut describe_table yang diperlukan untuk membuat model PynamoDB.

  • generate_model.py- Script ini berisi kelas Python GenerateModel yang menciptakan model PynamoDB berdasarkan file skema JSON masukan dan operasi. describe_table

  • generate_crud.py— Untuk tabel DynamoDB yang didefinisikan dalam file skema JSON, skrip ini menggunakan GenerateCrud operasi 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

TugasDeskripsiKeterampilan yang dibutuhkan

Kloning repositori.

Masukkan perintah berikut untuk mengkloning model PynamoDB yang dihasilkan otomatis dan repositori fungsi CRUD.

git clone https://github.com/aws-samples/amazon-reverse-engineer-dynamodb.git
Pengembang aplikasi

Siapkan lingkungan Python.

  1. Arahkan ke direktori tingkat atas di repositori kloning.

    cd amazon-reverse-engineer-dynamodb
  2. Masukkan perintah berikut untuk menginstal pustaka dan paket yang diperlukan.

    pip install -r requirements.txt
Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Ubah file skema JSON.

  1. Arahkan ke direktori tingkat atas di repositori kloning.

    cd amazon-reverse-engineer-dynamodb
  2. Buka test.json file di editor pilihan Anda. Anda dapat menggunakan file ini sebagai referensi untuk membuat file skema JSON Anda sendiri, atau Anda dapat memperbarui nilai dalam file ini agar sesuai dengan lingkungan Anda.

  3. Ubah nama, Wilayah AWS, dan atribut nilai untuk tabel DynamoDB target Anda.

    catatan

    Jika Anda mendefinisikan tabel yang tidak ada dalam file skema JSON, solusi ini tidak menghasilkan model atau fungsi CRUD untuk tabel itu.

  4. Simpan dan tutup file test.json. Kami menyarankan Anda menyimpan file ini dengan nama baru.

Pengembang aplikasi

Jalankan aplikasi Python.

Masukkan perintah berikut untuk menghasilkan model PynamoDB dan fungsi CRUD, <input_schema.json> di mana nama file skema JSON Anda.

python main.py --file <input_schema.json>
Pengembang aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Verifikasi model PynamodB yang dihasilkan.

  1. Di direktori tingkat atas dari repositori kloning, masukkan perintah berikut untuk menavigasi ke repositori. models

    cd models
  2. Secara default, solusi ini menamai file model PynamoDB. demo_model.py Validasi bahwa file ini ada.

Pengembang aplikasi

Verifikasi fungsi CRUD yang dihasilkan.

  1. Di direktori tingkat atas dari repositori kloning, masukkan perintah berikut untuk menavigasi ke repositori. crud

    cd crud
  2. Secara default, solusi ini memberi nama skripdemo_crud.py. Validasi bahwa file ini ada.

  3. Gunakan kelas Python dalam demo_crud.py file untuk melakukan operasi CRUD pada tabel DynamoDB target. Konfirmasikan bahwa operasi selesai dengan sukses.

Pengembang aplikasi

Sumber daya terkait

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" } ] } ]