Last Updated on April 27, 2022 by
Dalam setiap program di berbagai bahasa pemrograman pasti membutuhkan database. Begitu juga pada Python yang membutuhkan database. Adapun database standar dari Python adalah Python DB-API. Sebelum belajar REST API Python lebih jauh, Anda perlu pahami terlebih dahulu apa itu Database.
Table of Contents
Apa Itu Database?
Sebelumnya Anda pasti sudah familiar dengan istilah database. Berikut ini adalah penjelasan tentang database yang akan mengingatkan Anda tentang apa itu database.
Database adalah abstraksi atas sistem file sistem operasi yang memudahkan pengembang untuk membangun aplikasi yang membuat, membaca, memperbarui, dan menghapus data persisten.
Pada aplikasi web tingkat tinggi menyimpan data dan menyajikannya kepada pengguna dengan cara yang bermanfaat. Misalnya, Google menyimpan data tentang jalan dan memberikan petunjuk arah untuk pergi dari satu lokasi ke lokasi lain dengan berkendara melalui aplikasi Maps.
Petunjuk arah mengemudi dimungkinkan karena data disimpan dalam format terstruktur. Database membuat penyimpanan terstruktur dapat diandalkan dan cepat. Mereka juga memberi Anda kerangka kerja mental tentang bagaimana data harus disimpan dan diambil alih-alih harus mencari tahu apa yang harus dilakukan dengan data setiap kali Anda membangun aplikasi baru.
Database Python
Ada banyak sekali platform Python DB-API yang tersedia dan didukung oleh Python. Anda dapat memilih database yang tepat untuk aplikasi Anda. Python Database API mendukung berbagai server database seperti:
- GadFly
- mSQL
- MySQL
- PostgreSQL
- Microsoft SQL Server 2000
- Informix
- Interbase
- Oracle
SybaseBerikut adalah daftar antarmuka database Python yang tersedia: Antarmuka dan API Database Python. Anda harus mengunduh modul DB API terpisah untuk setiap database yang perlu Anda akses. Misalnya, jika Anda perlu mengakses database Oracle serta database MySQL, Anda harus mendownload modul database Oracle dan MySQL.
DB API menyediakan standar minimal untuk bekerja dengan database menggunakan struktur dan sintaks Python jika memungkinkan. API ini mencakup berikut
- Mengimpor modul API.
- Mendapatkan koneksi dengan database.
- Mengeluarkan pernyataan SQL dan prosedur tersimpan.
- Menutup koneksi
Kita akan mempelajari semua konsep menggunakan MySQL, jadi mari kita bicara tentang modul MySQLdb.
Apa Itu MySQLdb?
MySQLdb adalah Interface untuk menghubungkan ke server database MySQL dari Python. Ini mengimplementasikan Python Database API v2.0 dan dibangun di atas MySQL C API. Berikut ini adalah cara menginstal MySQLdb.
Sebelum melanjutkan, pastikan Anda telah menginstal MySQLdb di komputer Anda. Cukup ketik berikut ini di skrip Python Anda dan jalankan.
import MySQLdb
Jika menghasilkan hasil sebagai berikut, berarti modul MySQLdb belum terpasang.
Traceback (most recent call last): File "test.py", line 3, in <module> import MySQLdb ImportError: No module named MySQLdb
Untuk menginstal modul MySQLdb, Anda bisa gunakan perintah di bawah ini:
Untuk Ubuntu, Anda dapat menggunakan perintah berikut - $ sudo apt-get install python-pip python-dev libmysqlclient-dev Untuk Fedora, Anda dapat menggunakan perintah berikut - $ sudo dnf install python python-devel mysql-devel redhat-rpm-config gcc Untuk Python command prompt, Anda dapat menggunakan perintah berikut - pip install MySQL-python
Pastikan Anda memiliki hak akses root untuk menginstal modul di atas.
Koneksi Database Python
Sebelum mengkoneksikan Python DB-API ke MySQL maka pastikan beberapa hal di bawah ini.
- Anda telah membuat database sekolah.
- Anda telah membuat tabel siswa di sekolah
- Tabel ini memiliki bidang nama, usia, jenis_kelamin, dan hobi.
- ID pengguna “sekolah” dan kata sandi “asd123” diatur untuk mengakses sekolah.
- Modul Python MySQLdb diinstal dengan benar di mesin Anda.
- Anda telah melalui tutorial MySQL untuk memahami Dasar-dasar MySQL.
Berikut ini adalah contoh untuk mengkoneksikan MySQL Database “sekolah”
import MySQLdb db = MySQLdb.connect("localhost","sekolah","asd123","sekolah" ) cursor = db.cursor() cursor.execute("Pilih versi()") data = cursor.fetchone() print "Versi database adalah %s " % data db.close()
Ketika menjalankan skrip ini, maka hasil yang akan Anda peroleh.
Versi database adalah 5.0.45 (berdasarkan versi yg digunakan)
Jika koneksi dibuat dengan sumber data, maka Objek Koneksi dikembalikan dan disimpan ke db untuk digunakan lebih lanjut, jika tidak, db disetel ke None.
Selanjutnya, objek db digunakan untuk membuat objek kursor, yang pada gilirannya digunakan untuk mengeksekusi kueri SQL. Akhirnya, sebelum keluar, ini memastikan bahwa koneksi database ditutup dan sumber daya dilepaskan.
Membuat Tabel Database
Setelah koneksi database dibuat, kami siap untuk membuat tabel atau catatan ke dalam tabel database menggunakan metode eksekusi dari kursor yang dibuat. Berikut ini adalah contoh pembuatan tabel siswa.
import MySQLdb db = MySQLdb.connect("localhost","sekolah","asd123","sekolah" ) cursor = db.cursor() cursor.execute("DROP TABLE IF EXISTS siswa") sql = """CREATE TABLE siswa ( nama VARCHAR(255), usia INT, jenis_kelamin CHAR(1), hobi VARCHAR(255))""" cursor.execute(sql) db.close()
Operasi INSERT
Ini diperlukan ketika Anda ingin membuat catatan Anda ke dalam tabel database. Contoh berikut, mengeksekusi pernyataan SQL INSERT untuk membuat record ke dalam tabel siswa.
import MySQLdb db = MySQLdb.connect("localhost","sekolah","asd123","sekolah" ) cursor = db.cursor() sql = """INSERT INTO siswa(nama, usia, jenis_kelamin, hobi) VALUES ('Doni', 18, 'L', 'Tidur')""" try: cursor.execute(sql) db.commit() except: db.rollback() db.close()
Contoh di atas dapat ditulis sebagai berikut untuk membuat kueri SQL secara dinamis:
import MySQLdb db = MySQLdb.connect("localhost","sekolah","asd123","sekolah" ) cursor = db.cursor() sql = "INSERT INTO siswa(nama, \ usia, jenis_kelamin, hobi) \ VALUES ('%s', '%d', '%c', '%s' )" % \ ('Anto', 25, 'L', 'Mancing') try: cursor.execute(sql) db.commit() except: db.rollback() db.close()
Segmen kode berikut adalah bentuk eksekusi lain di mana Anda dapat melewatkan parameter secara langsung
Operasi READ
READ Operasi pada database apa pun berarti mengambil beberapa informasi berguna dari database. Setelah koneksi database kami dibuat, Anda siap untuk membuat kueri ke dalam database ini.
Anda dapat menggunakan metode fetchone() untuk mengambil satu record atau metode fetchall() untuk mengambil beberapa nilai dari tabel database.
- fetchone() Ini mengambil baris berikutnya dari kumpulan hasil kueri. Kumpulan hasil adalah objek yang dikembalikan saat objek kursor digunakan untuk kueri tabel.
- fetchall() Ini mengambil semua baris dalam set hasil. Jika beberapa baris telah diekstraksi dari kumpulan hasil, maka baris yang tersisa akan diambil dari kumpulan hasil.
- rowcount – Ini adalah atribut read-only dan mengembalikan jumlah baris yang dipengaruhi oleh metode execute().
Prosedur berikut menanyakan semua catatan dari tabel siswa yang memiliki gaji lebih dari 1000
import MySQLdb db = MySQLdb.connect("localhost","sekolah","asd123","sekolah") cursor = db.cursor() sql = "SELECT * FROM siswa \ WHERE usia > '%d'" % (20) try: cursor.execute(sql) results = cursor.fetchall() for row in results: nama = row[0] usia = row[1] jenis_kelamin = row[2] hobi = row[3] print "nama=%s, usia=%d, jenis_kelamin=%s, hobi=%s" % \ (nama, usia, jenis_kelamin, hobi) except: print "Error: tidak dapat mengambil data" db.close()
Maka kode di atas akan memberikan hasil sebagai berikut.
nama=Anto, usia=25, jenis_kelamin=L, hobi=Mancing
Operasi Update
Pengoperasian UPDATE pada database apa pun berarti memperbarui satu atau lebih catatan, yang sudah tersedia dalam database. Prosedur berikut memperbarui semua catatan yang memiliki jenis_kelamin sebagai ‘L’. Di sini, kami meningkatkan usia semua pria satu tahun. Berikut adalah contohnya.
import MySQLdb db = MySQLdb.connect("localhost","sekolah","asd123","sekolah") cursor = db.cursor() sql = "UPDATE siswa SET usia = usia + 1 WHERE jenis_kelamin = '%c'" % ('L') try: cursor.execute(sql) db.commit() except: db.rollback() db.close()
Operasi Delete
Operasi DELETE diperlukan ketika Anda ingin menghapus beberapa record dari database Anda. Berikut adalah prosedur untuk menghapus semua record dari siswa dimana usia lebih dari 20.
import MySQLdb db = MySQLdb.connect("localhost","sekolah","asd123","sekolah") cursor = db.cursor() sql = "DELETE FROM siswa WHERE usia > '%d'" % (20) try: cursor.execute(sql) db.commit() except: db.rollback() db.close()
Melakukan Transaksi
Transaksi adalah mekanisme yang menjamin konsistensi data. Transaksi memiliki empat properti berikut
- Atomicity – Transaksi selesai atau tidak terjadi sama sekali.
- Consistency – Sebuah transaksi harus dimulai dalam keadaan yang konsisten dan meninggalkan sistem dalam keadaan yang konsisten.
- Isolation – Hasil antara suatu transaksi tidak terlihat di luar transaksi saat ini.
- Durability – Setelah transaksi dilakukan, efeknya tetap ada, bahkan setelah kegagalan sistem.
Python DB-API 2.0 menyediakan dua metode untuk melakukan atau mengembalikan transaksi. Anda sudah tahu bagaimana menerapkan transaksi. Berikut ini adalah contoh serupa.
sql = "DELETE FROM siswa WHERE usia > '%d'" % (20) try: cursor.execute(sql) db.commit() except: db.rollback()
Operasi COMMIT
Commit adalah operasi, yang memberikan sinyal hijau ke database untuk menyelesaikan perubahan, dan setelah operasi ini, tidak ada perubahan yang dapat dikembalikan. Berikut adalah contoh sederhana untuk memanggil metode komit.
db.commit()
Operasi ROLLBACK
Jika Anda tidak puas dengan satu atau beberapa perubahan dan Anda ingin mengembalikan perubahan tersebut sepenuhnya, gunakan metode rollback(). Berikut adalah contoh sederhana untuk memanggil metode rollback().
db.rollback()
Disconnect Database
Untuk melakukan disconnect database, gunakan metode close().
db.close()
Jika koneksi ke database ditutup oleh pengguna dengan metode close(), setiap transaksi yang belum selesai akan dibatalkan oleh DB. Namun, daripada bergantung pada salah satu detail implementasi tingkat DB yang lebih rendah, aplikasi Anda akan lebih baik memanggil commit atau rollback secara eksplisit.
Handling Errors
Ada banyak sumber kesalahan. Beberapa contoh adalah kesalahan sintaks dalam pernyataan SQL yang dieksekusi, kegagalan koneksi, atau memanggil metode pengambilan untuk pegangan pernyataan yang sudah dibatalkan atau selesai.
Python DB-API mendefinisikan sejumlah kesalahan yang harus ada di setiap modul database. Tabel berikut mencantumkan exceptions ini.
Sr.No. | Exception & Description |
1 | Warning
Digunakan untuk masalah non-fatal. Harus subclass StandardError. |
2 | Error
Kelas dasar untuk kesalahan. Harus mensubkelaskan StandardError. |
3 | InterfaceError
Digunakan untuk kesalahan dalam modul database, bukan database itu sendiri. Harus kesalahan subkelas. |
4 | DatabaseError
Digunakan untuk kesalahan dalam database. Harus kesalahan subkelas. |
5 | DataError
Subclass dari DatabaseError yang mengacu pada kesalahan dalam data. |
6 | OperationalError
Subclass dari DatabaseError yang mengacu pada kesalahan seperti hilangnya koneksi ke database. Kesalahan ini umumnya di luar kendali skrip Python. |
7 | IntegrityError
Subkelas DatabaseError untuk situasi yang akan merusak integritas relasional, seperti batasan keunikan atau kunci asing. |
8 | InternalError
Subclass dari DatabaseError yang mengacu pada kesalahan internal ke modul database, seperti kursor tidak lagi aktif. |
9 | ProgrammingError
Subclass dari DatabaseError yang mengacu pada kesalahan seperti nama tabel yang buruk dan hal-hal lain yang dapat dengan aman disalahkan pada Anda. |
10 | NotSupportedError
Subkelas DatabaseError yang mengacu pada upaya memanggil fungsionalitas yang tidak didukung. |
Skrip Python Anda harus menangani kesalahan ini, tetapi sebelum menggunakan salah satu pengecualian di atas, pastikan MySQLdb Anda memiliki dukungan untuk pengecualian itu. Anda bisa mendapatkan informasi lebih lanjut tentang mereka dengan membaca spesifikasi DB API 2.0.
Itulah penjelasan tentang Python DB-API untuk Anda yang ingin belajar Python REST API. Jika Anda tertarik untuk tahu lebih banyak materi tentang Python Programming, jangan lupa kunjungi selalu Codekey di https://codekey.id/.
Codekey adalah media untuk belajar berbagai Bahasa Pemrograman yang bisa Anda gunakan untuk belajar bahasa pemrograman dengan mudah kapan saja dan di mana saja. Allow notification dari website Codekey dan dapatkan materi terbaru.
Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.