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
Petunjuk latihan
- Impor
TabledanMetaDatadarisqlalchemy. - Buat objek
MetaData:metadata - Refleksikan tabel
censusdengan menggunakan objekTabledengan argumen:- Nama tabel sebagai string (
'census'). - Metadata yang baru saja Anda inisialisasi.
autoload=True- Engine untuk autoload — dalam hal ini,
engine.
- Nama tabel sebagai string (
- Cetak detail
censusmenggunakan fungsirepr().
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(____)