MulaiMulai sekarang secara gratis

Autoload Tabel dari database

SQLAlchemy dapat digunakan untuk memuat tabel secara otomatis dari sebuah database menggunakan proses yang disebut refleksi. Refleksi adalah proses membaca database dan membangun metadata berdasarkan informasi tersebut. Ini kebalikan dari membuat Table secara manual dan sangat berguna saat bekerja dengan database yang sudah ada.

Untuk melakukan refleksi, pertama Anda perlu mengimpor dan menginisialisasi objek MetaData. Objek MetaData berisi informasi tentang tabel yang tersimpan di dalam database. Selama refleksi, objek MetaData akan diisi secara otomatis dengan informasi tentang tabel yang direfleksikan, sehingga kita hanya perlu menginisialisasinya sebelum proses refleksi dengan memanggil MetaData().

Anda juga perlu mengimpor objek Table dari paket SQLAlchemy. Kemudian, gunakan objek Table ini untuk membaca tabel dari engine, memuat otomatis kolom-kolomnya, dan mengisi metadata. Ini dapat dilakukan dengan satu pemanggilan ke Table(): menggunakan objek Table seperti ini mirip dengan memberikan argumen ke sebuah fungsi. Sebagai contoh, untuk memuat otomatis kolom-kolom menggunakan engine, Anda harus menentukan argumen kata kunci autoload=True dan autoload_with=engine pada Table().

Terakhir, untuk melihat informasi tentang objek yang baru saja Anda buat, gunakan fungsi repr(). Untuk objek Python apa pun, repr() mengembalikan representasi teks dari objek tersebut. Untuk objek Table di SQLAlchemy, ini akan mengembalikan informasi tentang tabel tersebut yang terdapat di metadata.

Pada latihan ini, tugas Anda adalah merefleksikan tabel "census" yang tersedia pada engine ke dalam sebuah variabel bernama census. Kami telah mengisi sebelumnya kode untuk membuat engine yang Anda tulis pada latihan sebelumnya.

Latihan ini adalah bagian dari kursus

Pengantar Basis Data di Python

Lihat Kursus

Petunjuk latihan

  • Impor Table dan MetaData dari sqlalchemy.
  • Buat objek MetaData: metadata
  • Refleksikan tabel census dengan menggunakan objek Table dengan argumen:
    • Nama tabel sebagai string ('census').
    • Metadata yang baru saja Anda inisialisasi.
    • autoload=True
    • Engine untuk autoload — dalam hal ini, engine.
  • Cetak detail census menggunakan fungsi repr().

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# Import create_engine, MetaData, and Table
from sqlalchemy import create_engine, ___, ____

# Create engine: engine
engine = create_engine('sqlite:///census.sqlite')

# Create a metadata object: metadata
metadata = ___

# Reflect census table from the engine: census
census = Table(____, ____, autoload=____, autoload_with=____)

# Print census table metadata
print(____)
Edit dan Jalankan Kode