Memilih data dari Tabel dengan SQLAlchemy
Kerja bagus sejauh ini! Sekarang saatnya Anda membangun pernyataan select pertama menggunakan SQLAlchemy. SQLAlchemy menyediakan cara berinteraksi dengan database yang "Pythonic". Saat Anda menggunakan SQL mentah pada latihan sebelumnya, Anda mengkueri database secara langsung. Saat menggunakan SQLAlchemy, Anda akan menggunakan objek Table, dan SQLAlchemy akan menangani penerjemahan kueri Anda menjadi pernyataan SQL yang sesuai. Dengan demikian, alih-alih harus menangani perbedaan dialek SQL tradisional tertentu seperti MySQL atau PostgreSQL, Anda dapat memanfaatkan kerangka kerja Pythonic dari SQLAlchemy untuk menyederhanakan alur kerja dan mengkueri data Anda secara lebih efisien. Karena alasan ini, mempelajarinya tetap bermanfaat bahkan jika Anda sudah akrab dengan SQL tradisional.
Dalam latihan ini, Anda akan kembali membangun pernyataan untuk mengkueri semua rekaman dari tabel census. Namun kali ini, Anda akan menggunakan fungsi select() dari modul sqlalchemy. Fungsi ini memerlukan daftar tabel atau kolom sebagai satu-satunya argumen wajib: misalnya, select([my_table]).
Anda juga akan mengambil hanya beberapa rekaman dari ResultProxy dengan menggunakan .fetchmany() dengan argumen size yang menentukan jumlah rekaman yang diambil.
Table dan MetaData telah diimpor. Metadata tersedia sebagai metadata dan koneksi ke database sebagai connection.
Latihan ini adalah bagian dari kursus
Pengantar Basis Data di Python
Petunjuk latihan
- Impor
selectdari modulsqlalchemy. - Refleksikan tabel
census. Kode ini sudah dituliskan untuk Anda. - Buat kueri menggunakan fungsi
select()untuk mengambil semua rekaman dalam tabelcensus. Caranya, berikan daftar keselect()yang berisi satu elemen:census. - Cetak
stmtuntuk melihat kueri SQL yang sebenarnya dibuat. Kode ini telah dituliskan untuk Anda. - Ambil 10 rekaman dari tabel
censusdan simpan dalamresults. Untuk melakukannya:- Gunakan metode
.execute()padaconnectiondenganstmtsebagai argumen untuk memperoleh ResultProxy. - Gunakan
.fetchmany()dengan argumensizeyang sesuai padaconnection.execute(stmt)untuk memperoleh ResultSet.
- Gunakan metode
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Import select
from ____ import ____
# Reflect census table via engine: census
census = Table('census', metadata, autoload=True, autoload_with=engine)
# Build select statement for census table: stmt
stmt = ____
# Print the emitted statement to see the SQL string
print(stmt)
# Execute the statement on connection and fetch 10 records: result
results = ____.____(____).____(size=___)
# Execute the statement and print the results
print(results)