Pemrograman

Menguasai Database SQLite dengan Python

Menguasai Database SQLite dengan Python

SQLite adalah sistem manajemen basis data relasional berdasarkan bahasa SQL; ini adalah mesin basis data tanpa server tanpa konfigurasi. Ini adalah salah satu mesin database paling populer dan sangat mudah digunakan dalam aplikasi kecil. Itu hanya membuat satu file disk untuk menyimpan seluruh database, yang membuat file portabel. Ini digunakan di OS Android sebagai sumber utama untuk menyimpan data. Itu juga digunakan oleh Google Chrome untuk menyimpan data situs dan data pengguna, termasuk kata sandi di mesin lokal.

Lanjutan bekerja dengan Database SQLite di Python

Dalam tutorial ini, topik yang akan dibahas adalah: menyisipkan gambar dalam tabel SQLite, Membuat daftar tabel yang ada dalam database, Mengidentifikasi perubahan total sejak database terhubung, Mencadangkan database, Membuang database SQLite, Mengembalikan di SQLite, Menghapus catatan dari tabel, Menjatuhkan tabel, dan pengecualian database SQLite.

Anda mungkin juga ingin melihat bagian pertama dari tutorial ini, yang menyajikan dasar-dasar SQLite, Keuntungan menggunakannya, Menghubungkan ke file database, Membuat tabel dalam database, Memasukkan data ke dalam tabel, Query data dari tabel, memperbarui tabel dan banyak lagi.

File dan gambar dalam database SQLite

Saat bekerja dengan database, ada situasi di mana Anda perlu memasukkan gambar atau file ke dalam database atau mengekspornya export. Misalnya, Jika Anda membuat database untuk menyimpan data karyawan, Anda mungkin juga perlu memasukkan gambar setiap karyawan ke dalam database.

Untuk menambahkan gambar dalam database SQLite, kita perlu menggunakan tipe data BLOB dari SQLite. Tipe data BLOB() digunakan untuk menyimpan objek besar biasanya file besar seperti gambar, musik, video, dokumen, PDF, dll. Langkah pertama adalah mengubah data dan gambar menjadi objek byte Python, yang mirip dengan tipe data BLOB SQLite. Sebelum melanjutkan, buat tabel bernama siswa dalam database dengan bidang id, nama, gambar, tanda. Jalankan kode berikut untuk membuat tabel.

impor sqlite3 samb = sqlite3.hubungkan("contoh.db") print("\n [+] Berhasil terhubung ke database") cur = conn.kursor() print("\n [+] Kursor telah berhasil diatur") table = cur.execute(""" CREATE TABLE student( id INT PRIMARY KEY, name TEXT, images BLOB, marks TEXT ); """) print("\n [+] Tabel telah berhasil dibuat") cur.tutup() sambung.komit() samb.Menutup()

Program ini akan membuat tabel baru dengan nama siswa. Anda akan melihat output berikut di terminal.

Memasukkan Gambar

Untuk menyisipkan gambar dalam database SQLite, ubah gambar dalam objek byte python dan kemudian masukkan ke dalam kolom gambar, yang menerima data BLOB. Jalankan kode berikut untuk menambahkan gambar gambar.png dalam database menggunakan Python.

impor sqlite3 samb = sqlite3.hubungkan("contoh.db") sambungan.text_factory = str print("\n [+] Berhasil terhubung ke database") cur = conn.kursor() print("\n [+] Kursor telah berhasil disiapkan") dengan open("img.png","rb") sebagai file: data = file.read() python_tuple = (101,"robin",data,"90") print("\n [+] Gambar telah berhasil diimpor") print("\n [+] Sekarang dimasukkan ke dalam database") cur.execute("INSERT INTO student (id,name,images,marks) VALUES (?,?,?,?)", python_tuple) print("\n [+] Data berhasil dimasukkan ") cur.tutup() sambung.komit() samb.Menutup()

Program ini akan memasukkan gambar ke database siswa yang Anda buat. Anda akan melihat output berikut:.

Dalam program di atas, kami telah membuka file dalam mode biner dan membaca setiap byte dan menyimpannya dalam variabel data. Kemudian kami menggunakan variabel itu dalam pernyataan INSERT untuk memasukkan gambar ke dalam database.

Mengambil gambar

Untuk mengambil gambar dari database, ambil baris menggunakan pernyataan pilih dan kemudian akses data biner gambar ke dalam variabel python, yang akan disimpan dalam file gambar. Lihat kode berikut untuk ilustrasi.

impor sqlite3 samb = sqlite3.hubungkan("contoh.db") sambungan.text_factory = str print("\n [+] Berhasil terhubung ke database") cur = conn.kursor() print("\n [+] Kursor telah berhasil diatur") print("\n [+] Mengambil gambar") cur.execute("SELECT * FROM student") ret = cur.fetchall() untuk saya di ret: data = i[2] dengan open("img2.png","wb") sebagai file: file.write(data) print("\n [+] Gambar telah disimpan") cur.tutup() sambung.komit() samb.Menutup()

Program sederhana ini akan mengambil gambar dari database dan menyimpannya di disk bernama img2.png. Anda juga dapat memilih nama lain untuk file gambar. Output dari program ditunjukkan di bawah ini.

Daftar semua Tabel dari Database

Dalam database, kita dapat membuat banyak tabel. Jadi ada juga kebutuhan untuk membuat daftar semua tabel yang ada dalam database. Untuk membuat daftar tabel yang ada dalam database, kueri tabel sqlite_master menggunakan pernyataan SELECT dari SQL. Sintaks kuerinya adalah:

PILIH nama DARI sqlite_master WHERE type="table"

Inilah cara kami menggunakan kueri ini untuk membuat daftar semua tabel yang ada di database kami.

impor sqlite3 samb = sqlite3.hubungkan("contoh.db") print("\n [+] Berhasil terhubung ke database") cur = conn.kursor() print("\n [+] Kursor telah berhasil diatur") cur.execute("SELECT name from sqlite_master where type="table"") rows = cur.fetchall() print(baris) cur.tutup() sambung.komit() samb.Menutup()

Kode di atas akan mencantumkan semua tabel yang ada di database kami. Output yang dihasilkan oleh kode saat dieksekusi adalah sebagai berikut:. Anda mungkin melihat beberapa output lain tergantung pada tabel yang telah Anda buat di database.

Mengidentifikasi perubahan total sejak terhubung ke database

Dalam situasi apapun, akan berguna untuk mengidentifikasi jumlah baris yang telah diubah, disisipkan, atau dihapus sejak database telah terhubung. Untuk itu, gunakan total_perubahan() metode objek koneksi, yang akan mengembalikan jumlah baris database yang telah terpengaruh sejak koneksi. Mari kita lihat contoh demo untuk mengetahui cara kerjanya.

impor sqlite3 samb = sqlite3.hubungkan("contoh.db") sambungan.text_factory = str print("\n [+] Berhasil terhubung ke kedua database") cur = conn.kursor() print("\n [+] Kedua Kursor telah berhasil diatur") cur.execute("INSERT INTO student (id, name, images, marks) VALUES (140, 'David',",99 )") cur.execute("INSERT INTO student (id, name,images, marks) VALUES (150, 'Sam',", 97)") changes = samb.total_changes print("\n [+] Total sekarang dari perubahan baris adalah :",perubahan) samb.komit () sekarang.tutup() sambung.Menutup()

Program di atas akan mencetak jumlah perubahan baris dalam koneksi saat ini. Anda akan melihat output berikut:.

Kembalikan di SQLite

Saat membatalkan beberapa tugas, Anda dapat menggunakan fungsi rollback(). Metode ini dapat digunakan untuk membatalkan tugas yang telah dilakukan setelah komit terakhir. Lihat contoh di bawah untuk ilustrasi.

impor sqlite3 samb = sqlite3.hubungkan("contoh.db") sambungan.text_factory = str print("\n [+] Berhasil terhubung ke kedua database") cur = conn.kursor() print("\n [+] Kedua Kursor telah berhasil diatur") cur.execute("INSERT INTO student (id, name, images, marks) VALUES (100001, 'David',",99 )") cur.execute("INSERT INTO student (id, name,images, marks) VALUES (100002, 'Sam',", 97)") samb.commit() print("\n [+] Dua baris telah berhasil dimasukkan") cur.execute("SELECT * FROM student") first = cur.fetchall() print("\n [+] Record baru dalam database adalah :") for i in first: print(i) cur.execute("INSERT INTO student (id, name, images, marks) VALUES (10003, 'Kishan',", 100)") cur.execute("INSERT INTO student (id, name, images, marks) VALUES (10004, 'Ankit',", 100)") print("\n [+] Dua baris telah berhasil dimasukkan tetapi tidak dikomit") conn.rollback() print("\n [+] Kami telah memutar kembali perintah sebelumnya sehingga data baru tidak akan dimasukkan") samb.komit () sekarang.execute("SELECT * FROM student") second = cur.fetchall() print("\n [+] Catatan baru dalam database adalah :") for i in second: print(i) cur.tutup() sambung.Menutup()

Dalam contoh di atas, dua pernyataan penyisipan pertama akan memasukkan data seperti yang diberikan, tetapi dua pernyataan penyisipan terakhir akan dikembalikan sehingga tidak akan menambahkan data apa pun ke dalam tabel. Outputnya akan seperti gambar di bawah ini.

Cadangkan Basis Data

Saat bekerja dengan database, penting untuk membuat cadangan database. Modul sqlite3 menyediakan fungsi untuk mengambil cadangan database. Menggunakan metode backup() dari objek koneksi, kita dapat membuat cadangan database SQLiteite. Sintaks dasar metode pencadangan adalah:

cadangan(target, *, halaman=0, kemajuan=Tidak ada, nama="utama", tidur=0.250)

Secara default, atau ketika halaman baik? 0 atau bilangan bulat negatif, seluruh basis data disalin dalam satu langkah, yang lebih disukai untuk basis data kecil; jika tidak, metode ini melakukan penyalinan loop hingga halaman pada waktu yang dapat dilakukan dengan database yang luas. Itu nama argumen menunjukkan nama database yang akan disalin: itu harus berupa string yang berisi default, untuk menunjukkan database utama, atau untuk menunjukkan database sementara. Itu tidur argumen menentukan waktu dalam detik untuk tidur di antara upaya untuk mencadangkan halaman yang tersisa. Itu bisa berupa bilangan bulat atau nilai titik-mengambang.

Mari kita mengambil cadangan dari basis data.db database yang telah kami gunakan dalam tutorial.

impor sqlite3 conn_main = sqlite3.hubungkan("contoh.db") conn_backup = sqlite3.connect("sampel_cadangan.db") print("\n [+] Berhasil terhubung ke kedua database") cur_main = conn_main.kursor() cur_backup = conn_backup.kursor() print("\n [+] Kedua Kursor telah berhasil diatur") conn_main.backup(conn_backup, pages=0, progress=None, name="main") print("Database telah berhasil dicadangkan") cur_main.tutup() cur_backup.tutup() conn_main.commit() koneksi_backup.komit() konn_main.tutup() samb_backup.Menutup()

Pada kode di atas, dua database terhubung, satu adalah database yang ingin kita backup, dan yang kedua adalah database yang akan kita backup. Menggunakan cadangan() metode objek koneksi database pertama yang membuat cadangan. Fungsi ini menerima objek koneksi dari database kedua sebagai target untuk membuat cadangan di database lain. Menggunakan halaman = 0 argumen, jadi prosesnya akan berlangsung dalam satu langkah, yang direkomendasikan untuk database kecil. Program ini akan membuat contoh nama database baru_cadangan.db dan isi dengan cadangan database pertama. Anda mungkin melihat database baru telah dibuat di folder saat ini dengan ukuran file yang sama seperti sebelumnya.

Membuang database SQLite

Membuang database adalah tugas penting. Biasanya, file dump adalah kumpulan pernyataan SQL untuk data, yang umumnya digunakan untuk cadangan. Kita dapat membuang database menggunakan metode dump(). Lihat contoh di bawah ini untuk mengetahui cara menjatuhkan database SQLite.

impor sqlite3 con = sqlite3.connect("database.db") dengan open('dump.sql', 'w') sebagai f: untuk baris dalam con.iterdump(): f.tulis('%s\n' % baris)

Program di atas akan membuang sampel database.db, dan itu akan menyimpan data yang dibuang ke dalam file bernama dump.sql. Anda dapat melihat data yang ada di direktori tempat file python saat ini dan membukanya menggunakan editor teks apa pun.

executemany() metode SQLite3

Itu eksekusi banyak() metode mengeksekusi perintah SQL terhadap semua urutan parameter atau pemetaan yang ditemukan dalam urutan seq_of_parameters. Untuk kesederhanaan, metode ini dapat digunakan untuk menjalankan sebagian besar perintah SQL dalam satu baris. E.g., Kami dapat memasukkan sejumlah baris melalui daftar python menggunakan perintah ini. Lihat contoh di bawah untuk ilustrasi.

impor sqlite3 samb = sqlite3.hubungkan("contoh.db") print("\n [+] Berhasil terhubung ke database") cur = conn.kursor() print("\n [+] Kursor telah berhasil disiapkan") python_list = [(10000000 ,'vivek',",'10'), (100000001,'rose',",'21'), (100000002,'robin',",'31'), (100000003,'Dev',",'4'), (100000004,'michael',",'52')] cur.executemany("INSERT INTO student (id, nama, gambar, tanda) VALUES (?,?,?,?)",python_list) print("\n [+] Semua Data Berhasil Dimasukkan ") cur.tutup() sambung.komit() samb.Menutup()

Program di atas akan memasukkan semua data yang diberikan dalam daftar python. Output yang dihasilkan oleh program ditunjukkan di bawah ini:.

Hapus Catatan dari Tabel

Kita dapat menggunakan operasi DELETE untuk menghapus record dari tabel. Kami dapat dengan cepat menghapus baris menggunakan operasi DELETE dengan klausa WHERE. Sintaks dasar untuk pernyataan DELETE adalah:

HAPUS dari table_name WHERE some_condition;

Mari kita lihat contohnya. Kami akan menghapus baris dengan id 1001 dari tabel karyawan database kami.

impor sqlite3 samb = sqlite3.hubungkan("contoh.db") sambungan.text_factory = str print("\n [+] Berhasil terhubung ke database") cur = conn.kursor() print("\n [+] Kursor telah berhasil diatur") cur.execute("DELETE FROM student WHERE id=1001") print("\n [+] Baris telah berhasil dihapus ") cur.mengeksekusi("PILIH * DARI siswa") data = cur.fetchall() untuk baris dalam data: print(row) cur.tutup() sambung.komit() samb.Menutup()

Kode di atas akan Menghapus baris dengan ID 1001. Anda dapat melihat dari kembalinya pernyataan SELECT bahwa baris telah dihapus. Output programnya seperti gambar di bawah ini.

Jatuhkan Meja

Kami dapat dengan cepat menjatuhkan atau menghapus tabel menggunakan pernyataan SQLite DROP. Sintaks dari pernyataan DROP adalah seperti yang ditunjukkan di bawah ini:

DROP tabel table_name 

Jika tabel tidak ada, maka SQLite akan membuat kesalahan, jadi untuk mencegahnya, kita dapat menggunakan: jika ada tag dengan pernyataan DROP. Lihat sintaks di bawah ini:

DROP tabel jika ada table_name

Mari kita lihat bagaimana kita dapat menggunakan pernyataan ini dengan python sqlite3 modul untuk menghapus tabel. Dalam program ini, kami akan menghapus siswa tabel yang telah kita buat sebelumnya.

impor sqlite3 samb = sqlite3.hubungkan("contoh.db") sambungan.text_factory = str print("\n [+] Berhasil terhubung ke database") cur = conn.kursor() print("\n [+] Kursor telah berhasil diatur") cur.execute("DROP TABLE IF EXISTS student") print("\n [+] Tabel telah berhasil dijatuhkan") cur.tutup() sambung.komit() samb.Menutup()

Program di atas akan menghapus tabel siswa dari Sampel basis data. Kita dapat menggunakan perintah tabel daftar yang telah kita lihat sebelumnya untuk melihat apakah tabel tersebut dihapus. Output programnya seperti gambar di bawah ini.

Pengecualian Basis Data SQLite

Beberapa pengecualian database SQLite mungkin muncul karena beberapa kesalahan. Mari kita lihat sedikit ketika kesalahan itu muncul.

Ini adalah daftar semua pengecualian SQLite; kami dapat menangani pengecualian tersebut dalam program kami menggunakan metode penanganan kesalahan dasar try/except dari Python.

Kesimpulan

Itu membawa kita ke akhir panduan komprehensif tentang metode lanjutan bekerja dengan SQLite menggunakan Python. Saya harap Anda mempelajari semua aspek SQLite3 menggunakan Python, yang akan membantu kami membangun proyek Python yang fantastis.

Kursor melompat atau bergerak secara acak saat mengetik di Windows 10
Jika Anda menemukan bahwa kursor mouse Anda melompat atau bergerak sendiri, secara otomatis, acak saat mengetik di laptop atau komputer Windows, maka ...
Cara membalikkan arah gulir Mouse dan Touchpads di Windows 10
Mouse dan Panel sentuhs tidak hanya membuat komputasi menjadi mudah tetapi juga lebih efisien dan tidak memakan banyak waktu. Kami tidak dapat membaya...
Cara mengubah penunjuk Mouse dan ukuran kursor, warna & skema pada Windows 10
Penunjuk mouse dan kursor di Windows 10 adalah aspek yang sangat penting dari sistem operasi. Ini dapat dikatakan untuk sistem operasi lain juga, jadi...