Tahukah Anda bahwa Python memiliki DBMS yang disematkan?

Jika Anda seorang programmer, maka saya kira Anda mungkin tahu tentang keberadaan DBMS SQLite yang sangat kompak dan ringan, atau bahkan menggunakannya. Sistem ini memiliki hampir semua kemampuan yang Anda harapkan dari sistem manajemen basis data relasional, tetapi semuanya disimpan dalam satu file. Berikut adalah beberapa skenario penggunaan SQLite yang disebutkan di situs resmi sistem ini:



  • Perangkat tertanam dan IoT.
  • Analisis data.
  • Mentransfer data dari satu sistem ke sistem lainnya.
  • Pengarsipan data dan (atau) pengemasan data ke dalam wadah.
  • Penyimpanan data dalam database eksternal atau sementara.
  • Pengganti database perusahaan yang digunakan untuk tujuan demonstrasi atau pengujian.
  • Pelatihan, penguasaan teknik praktis bekerja dengan database oleh pemula.
  • Membuat prototipe dan meneliti ekstensi eksperimental dari bahasa SQL.


Anda dapat menemukan alasan lain untuk menggunakan database ini di dokumentasi SQLite . Artikel ini tentang penggunaan SQLite dalam pengembangan Python. Oleh karena itu, sangatlah penting bagi kami bahwa DBMS ini, yang diwakili oleh modul , disertakan dalam pustaka standar bahasa tersebut. Artinya, ternyata untuk bekerja dengan SQLite dari kode Python, Anda tidak perlu menginstal perangkat lunak server-klien, Anda tidak perlu mendukung pengoperasian beberapa layanan yang bertanggung jawab untuk bekerja dengan DBMS. Yang perlu Anda lakukan adalah mengimpor modul dan mulai menggunakannya dalam program, setelah menerima sistem manajemen basis data relasional yang Anda inginkan.







sqlite3sqlite3



Impor modul



Di atas, saya mengatakan bahwa SQLite adalah DBMS yang dibangun ke dalam Python. Ini berarti bahwa untuk mulai bekerja dengannya, cukup dengan mengimpor modul yang sesuai tanpa terlebih dahulu menginstalnya menggunakan perintah seperti pip install. Perintah impor SQLite terlihat seperti ini:



import sqlite3 as sl


Membuat koneksi ke database



Untuk membuat koneksi ke database SQLite, Anda tidak perlu khawatir tentang menginstal driver, menyiapkan string koneksi, dan hal-hal semacam itu. Anda dapat membuat database dan mendapatkan objek koneksi yang Anda inginkan dengan sangat sederhana dan cepat:



con = sl.connect('my-test.db')


Dengan mengeksekusi baris kode ini, kita akan membuat database dan menghubungkannya. Intinya di sini adalah bahwa database yang kita hubungkan belum ada, sehingga sistem secara otomatis membuat database baru yang kosong. Jika database sudah dibuat (katakanlah ini my-test.dbdari contoh sebelumnya), untuk menghubungkannya, Anda hanya perlu menggunakan kode yang persis sama.





File database yang baru dibuat



Membuat tabel



Sekarang mari buat tabel di database baru kita:



with con:
    con.execute("""
        CREATE TABLE USER (
            id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
            name TEXT,
            age INTEGER
        );
    """)


Ini menjelaskan cara menambahkan tabel USERdengan tiga kolom ke database . Seperti yang Anda lihat, SQLite memang sistem manajemen basis data yang sangat sederhana, tetapi memiliki semua kemampuan dasar yang Anda harapkan dari sistem manajemen basis data relasional konvensional. Kita berbicara tentang dukungan untuk tipe data, termasuk - tipe yang memungkinkan nilai null, dukungan untuk kunci utama dan peningkatan otomatis.



Jika kode ini berfungsi seperti yang diharapkan (perintah di atas, bagaimanapun, tidak mengembalikan apa pun), kita akan memiliki tabel yang dapat kita gunakan, siap untuk bekerja lebih lanjut dengannya.



Memasukkan catatan ke dalam tabel



Mari masukkan beberapa record ke dalam tabel yang USERbaru kita buat. Ini, antara lain, akan memberi kita bukti bahwa tabel tersebut memang dibuat dengan perintah di atas.



Mari kita bayangkan bahwa kita perlu menambahkan beberapa record ke tabel dengan satu perintah. Sangat mudah untuk melakukan ini di SQLite:



sql = 'INSERT INTO USER (id, name, age) values(?, ?, ?)'
data = [
    (1, 'Alice', 21),
    (2, 'Bob', 22),
    (3, 'Chris', 23)
]


Di sini kita perlu mendefinisikan ekspresi SQL dengan tanda tanya ( ?) sebagai placeholder. Mengingat bahwa kami memiliki objek koneksi database yang kami inginkan, kami, setelah menyiapkan ekspresi dan data, dapat memasukkan catatan ke dalam tabel:



with con:
    con.executemany(sql, data)


Setelah menjalankan kode ini, tidak ada pesan error yang diterima yang berarti data telah berhasil ditambahkan ke tabel.



Menjalankan Query Database



Sekarang saatnya untuk mengetahui apakah perintah yang baru saja kita jalankan telah berfungsi dengan benar. Mari jalankan kueri ke database dan coba dapatkan USERbeberapa data dari tabel . Misalnya - kami mendapatkan catatan terkait pengguna yang usianya tidak melebihi 22 tahun:



with con:
    data = con.execute("SELECT * FROM USER WHERE age <= 22")
    for row in data:
        print(row)




Hasil dari mengeksekusi query ke database



Seperti yang Anda lihat, kami berhasil mendapatkan apa yang dibutuhkan. Dan itu sangat mudah dilakukan.



Selain itu, meskipun SQLite adalah DBMS sederhana, ia memiliki dukungan yang sangat luas. Oleh karena itu, Anda dapat mengerjakannya menggunakan sebagian besar klien SQL.



Saya menggunakan DBeaver. Mari kita lihat tampilannya.



Menghubungkan ke database SQLite dari klien SQL (DBeaver)



Saya menggunakan layanan cloud Google Colab dan ingin mendownload file my-test.dbke komputer saya. Jika Anda bereksperimen dengan SQLite di komputer, itu berarti Anda, tanpa harus mengunduh file database dari suatu tempat, dapat menyambungkannya menggunakan klien SQL.



Dalam kasus DBeaver, untuk menghubungkan ke database SQLite, Anda perlu membuat koneksi baru dan memilih SQLite sebagai tipe database.





Mempersiapkan koneksi di DBeaver



Selanjutnya, Anda perlu mencari file database.





Menghubungkan file database



Kemudian Anda dapat menjalankan kueri SQL terhadap database. Tidak ada yang istimewa di sini, berbeda dengan bekerja dengan database relasional biasa.





Menjalankan Query Database



Integrasi dengan panda



Menurut Anda, apakah di sinilah kita mengakhiri percakapan tentang dukungan SQLite dengan Python? Tidak, masih banyak yang harus kita bicarakan. Yaitu, karena SQLite adalah modul Python standar, itu terintegrasi dengan mudah dengan bingkai data pandas.



Mari deklarasikan kerangka data:



df_skill = pd.DataFrame({
    'user_id': [1,1,2,2,3,3,3],
    'skill': ['Network Security', 'Algorithm Development', 'Network Security', 'Java', 'Python', 'Data Science', 'Machine Learning']
})




Pandas dataframe



Untuk menyimpan dataframe ke database, Anda cukup menggunakan metodenyato_sql():



df_skill.to_sql('SKILL', con)


Itu saja! Kami bahkan tidak perlu membuat tabel terlebih dahulu. Jenis data dan karakteristik bidang akan dikonfigurasi secara otomatis berdasarkan karakteristik dataframe. Tentu saja, Anda dapat menyesuaikan semuanya sendiri jika diperlukan.



Sekarang misalkan kita perlu menggabungkan tabel USERdan SKILL, dan menulis data dalam datafreym pandas. Ini juga sangat sederhana:



df = pd.read_sql('''
    SELECT s.user_id, u.name, u.age, s.skill 
    FROM USER u LEFT JOIN SKILL s ON u.id = s.user_id
''', con)




Membaca data dari database menjadi pandas dataframe



Bagus! Sekarang mari kita tulis apa yang kita dapatkan ke tabel baru bernamaUSER_SKILL:



df.to_sql('USER_SKILL', con)


Tentu saja, Anda dapat bekerja dengan tabel ini menggunakan klien SQL.





Menggunakan klien SQL untuk bekerja dengan database



Hasil



Tentu ada banyak kejutan menyenangkan dengan Python yang, kecuali jika Anda mencarinya secara khusus, Anda mungkin tidak menyadarinya. Tidak ada yang menyembunyikan fitur seperti itu secara khusus, tetapi karena banyak hal yang dibangun ke dalam Python, Anda tidak dapat memperhatikan beberapa fitur ini, atau, setelah mempelajarinya dari suatu tempat, lupakan saja.



Di sini saya berbicara tentang cara menggunakan pustaka Python bawaan sqlite3untuk membuat dan bekerja dengan basis data. Tentu saja, basis data seperti itu tidak hanya mendukung operasi penambahan data, tetapi juga operasi mengubah dan menghapus informasi. Saya percaya Anda, setelah mempelajarinya sqlite3, akan mengalami semuanya sendiri.



Yang paling penting adalah SQLite sangat bagus untuk panda. Sangat mudah untuk membaca data dari database dengan menempatkannya di dataframe. Operasi menyimpan konten dataframe ke database tidak kalah sederhana. Ini membuat SQLite lebih mudah digunakan.



Saya mengundang semua orang yang telah membaca sejauh ini untuk melakukan penelitian mereka sendiri untuk mencari fitur Python yang menarik!



Kode yang saya tunjukkan dalam artikel ini dapat ditemukan di sini .



Apakah Anda menggunakan SQLite dalam proyek Python Anda?






All Articles