Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Python

Akses Database MySQL Python – Menggunakan DB-API Standar

Halaman Sebelumnya Halaman Berikutnya  

Standar Python untuk antarmuka basis data adalah Python DB-API. Sebagian besar antarmuka basis data Python mengikuti standar ini.

Anda dapat memilih basis data yang tepat untuk aplikasi Anda. Python Database API mendukung berbagai server basis data seperti −

Berikut adalah daftar antarmuka basis data Python yang tersedia: Antarmuka dan API Basis Data Python. Anda harus mengunduh modul DB API terpisah untuk setiap basis data yang perlu diakses. Misalnya, jika Anda perlu mengakses basis data Oracle dan basis data MySQL, Anda harus mengunduh modul basis data Oracle dan MySQL.

DB API menyediakan standar minimal untuk bekerja dengan basis data menggunakan struktur dan sintaks Python di mana mungkin. API ini mencakup hal berikut −

Kita akan mempelajari semua konsep menggunakan MySQL, jadi mari kita bicara tentang modul MySQLdb.

Apa itu MySQLdb?

MySQLdb adalah antarmuka untuk terhubung ke server basis data MySQL dari Python. Ia mengimplementasikan Python Database API v2.0 dan dibangun di atas MySQL C API.

Bagaimana cara Menginstal MySQLdb?

Sebelum melanjutkan, pastikan Anda telah menginstal MySQLdb pada mesin Anda. Ketikkan perintah berikut dalam skrip Python Anda dan jalankan −

 #!/usr/bin/python import MySQLdb 

Jika menghasilkan hasil berikut, berarti modul MySQLdb tidak terinstal −

 Traceback (most recent call last): File "test.py", line 3, in <module> import MySQLdb ImportError: No module named MySQLdb 

Untuk menginstal modul MySQLdb, gunakan perintah berikut −

 Untuk Ubuntu, gunakan perintah berikut - $ sudo apt-get install python-pip python-dev libmysqlclient-dev Untuk Fedora, gunakan perintah berikut - $ sudo dnf install python python-devel mysql-devel redhat-rpm-config gcc Untuk prompt perintah Python, gunakan perintah berikut - pip install MySQL-python 

Catatan − Pastikan Anda memiliki hak akses root untuk menginstal modul di atas.

Koneksi Basis Data

Sebelum terhubung ke basis data MySQL, pastikan hal berikut −

Contoh

Berikut adalah contoh koneksi dengan basis data MySQL "TESTDB"

 #!/usr/bin/python import MySQLdb # Buka koneksi basis data db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # siapkan objek kursor menggunakan metode cursor() cursor = db.cursor() # jalankan kueri SQL menggunakan metode execute(). cursor.execute("SELECT VERSION()") # Ambil satu baris menggunakan metode fetchone(). data = cursor.fetchone() print "Versi basis data : %s " % data # putuskan koneksi dari server db.close() 

Saat menjalankan skrip ini, hasil berikut dihasilkan di mesin Linux saya.

 Database version : 5.0.45 

Jika koneksi ter Establish dengan sumber data, maka Objek Koneksi dikembalikan dan disimpan dalam db untuk penggunaan selanjutnya, jika tidak db diatur ke None. Selanjutnya, objek db digunakan untuk membuat objek cursor, yang kemudian digunakan untuk menjalankan kueri SQL. Akhirnya, sebelum keluar, memastikan bahwa koneksi basis data ditutup dan sumber daya dilepaskan.

Membuat Tabel Basis Data

Setelah koneksi basis data ter Establish, kita siap untuk membuat tabel atau catatan ke dalam tabel basis data menggunakan metode execute dari kursor yang dibuat.

Contoh

Mari kita buat Tabel Basis Data EMPLOYEE −

 #!/usr/bin/python import MySQLdb # Buka koneksi basis data db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # siapkan objek kursor menggunakan metode cursor() cursor = db.cursor() # Hapus tabel jika sudah ada menggunakan metode execute(). cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") # Buat tabel sesuai kebutuhan sql = """CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )""" cursor.execute(sql) # putuskan koneksi dari server db.close() 

Operasi INSERT

Diperlukan saat Anda ingin membuat catatan Anda ke dalam tabel basis data.

Contoh

Contoh berikut menjalankan pernyataan SQL INSERT untuk membuat catatan ke dalam tabel EMPLOYEE −

 #!/usr/bin/python import MySQLdb # Buka koneksi basis data db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # siapkan objek kursor menggunakan metode cursor() cursor = db.cursor() # Siapkan kueri SQL untuk memasukkan catatan ke dalam basis data. sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)""" try: # Jalankan perintah SQL cursor.execute(sql) # Comit perubahan Anda di basis data db.commit() except: # Rollback jika ada error db.rollback() # putuskan koneksi dari server db.close() 

Contoh di atas dapat ditulis sebagai berikut untuk membuat kueri SQL secara dinamis −

 #!/usr/bin/python import MySQLdb # Buka koneksi basis data db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # siapkan objek kursor menggunakan metode cursor() cursor = db.cursor() # Siapkan kueri SQL untuk memasukkan catatan ke dalam basis data. sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \ LAST_NAME, AGE, SEX, INCOME) \ VALUES ('%s', '%s', '%d', '%c', '%d' )" % \ ('Mac', 'Mohan', 20, 'M', 2000) try: # Jalankan perintah SQL cursor.execute(sql) # Comit perubahan Anda di basis data db.commit() except: # Rollback jika ada error db.rollback() # putuskan koneksi dari server db.close() 

Contoh

Segmen kode berikut adalah bentuk lain eksekusi tempat Anda dapat melewatkan parameter langsung −

 .................................. user_id = "test123" password = "password" con.execute('insert into Login values("%s", "%s")' % \ (user_id, password)) .................................. 

Operasi READ

Operasi READ pada basis data apa pun berarti mengambil informasi berguna dari basis data.

Setelah koneksi basis data ter Establish, Anda siap untuk membuat kueri ke basis data ini. Anda dapat menggunakan metode fetchone() untuk mengambil satu catatan atau metode fetchall() untuk mengambil banyak nilai dari tabel basis data.

Contoh

Prosedur berikut mengkueri semua catatan dari tabel EMPLOYEE yang memiliki gaji lebih dari 1000 −

 #!/usr/bin/python import MySQLdb # Buka koneksi basis data db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # siapkan objek kursor menggunakan metode cursor() cursor = db.cursor() sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME > '%d'" % (1000) try: # Jalankan perintah SQL cursor.execute(sql) # Ambil semua baris dalam daftar daftar. results = cursor.fetchall() for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # Sekarang cetak hasil yang diambil print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \ (fname, lname, age, sex, income ) except: print "Error: unable to fecth data" # putuskan koneksi dari server db.close() 

Ini akan menghasilkan hasil berikut −

 fname=Mac, lname=Mohan, age=20, sex=M, income=2000 

Operasi Update

Operasi UPDATE pada basis data apa pun berarti memperbarui satu atau lebih catatan yang sudah tersedia di basis data.

Prosedur berikut memperbarui semua catatan yang memiliki SEX 'M'. Di sini, kami meningkatkan AGE semua pria satu tahun.

Contoh

 #!/usr/bin/python import MySQLdb # Buka koneksi basis data db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # siapkan objek kursor menggunakan metode cursor() cursor = db.cursor() # Siapkan kueri SQL untuk UPDATE catatan yang diperlukan sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M') try: # Jalankan perintah SQL cursor.execute(sql) # Comit perubahan Anda di basis data db.commit() except: # Rollback jika ada error db.rollback() # putuskan koneksi dari server db.close() 

Operasi DELETE

Operasi DELETE diperlukan saat Anda ingin menghapus beberapa catatan dari basis data Anda. Berikut adalah prosedur untuk menghapus semua catatan dari EMPLOYEE di mana AGE lebih dari 20 −

Contoh

 #!/usr/bin/python import MySQLdb # Buka koneksi basis data db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # siapkan objek kursor menggunakan metode cursor() cursor = db.cursor() # Siapkan kueri SQL untuk DELETE catatan yang diperlukan sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # Jalankan perintah SQL cursor.execute(sql) # Comit perubahan Anda di basis data db.commit() except: # Rollback jika ada error db.rollback() # putuskan koneksi dari server db.close() 

Melakukan Transaksi

Transaksi adalah mekanisme yang memastikan konsistensi data. Transaksi memiliki empat properti berikut −

Python DB API 2.0 menyediakan dua metode untuk commit atau rollback transaksi.

Contoh

Anda sudah tahu cara mengimplementasikan transaksi. Berikut lagi contoh yang serupa −

 # Siapkan kueri SQL untuk DELETE catatan yang diperlukan sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # Jalankan perintah SQL cursor.execute(sql) # Comit perubahan Anda di basis data db.commit() except: # Rollback jika ada error db.rollback() 

Operasi COMMIT

Commit adalah operasi yang memberikan sinyal hijau kepada basis data untuk menyelesaikan perubahan, dan setelah operasi ini, tidak ada perubahan yang dapat dikembalikan.

Berikut adalah contoh sederhana untuk memanggil metode commit.

 db.commit() 

Operasi ROLLBACK

Jika Anda tidak puas dengan satu atau beberapa perubahan dan ingin mengembalikan perubahan tersebut sepenuhnya, gunakan metode rollback().

Berikut adalah contoh sederhana untuk memanggil metode rollback().

 db.rollback() 

Memutuskan Koneksi Basis Data

Untuk memutuskan koneksi basis data, gunakan metode close().

 db.close() 

Jika koneksi ke basis data ditutup oleh pengguna dengan metode close(), transaksi yang belum selesai akan di-rollback oleh basis data. Namun, alih-alih bergantung pada detail implementasi tingkat bawah basis data apa pun, aplikasi Anda akan lebih baik memanggil commit atau rollback secara eksplisit.

Menangani Error

Ada banyak sumber error. Beberapa contoh adalah error sintaks dalam pernyataan SQL yang dijalankan, kegagalan koneksi, atau memanggil metode fetch untuk handle pernyataan yang sudah dibatalkan atau selesai.

DB API mendefinisikan sejumlah error yang harus ada di setiap modul basis data. Tabel berikut mencantumkan exception ini.

Sr.No. Exception & Deskripsi
1

Warning

Digunakan untuk masalah non-fatal. Harus merupakan subclass StandardError.

2

Error

Kelas dasar untuk error. Harus merupakan subclass StandardError.

3

InterfaceError

Digunakan untuk error dalam modul basis data, bukan basis data itu sendiri. Harus merupakan subclass Error.

4

DatabaseError

Digunakan untuk error dalam basis data. Harus merupakan subclass Error.

5

DataError

Subclass DatabaseError yang merujuk pada error dalam data.

6

OperationalError

Subclass DatabaseError yang merujuk pada error seperti kehilangan koneksi ke basis data. Error ini biasanya di luar kendali pengembang Python.

7

IntegrityError

Subclass DatabaseError untuk situasi yang akan merusak integritas relasional, seperti batasan keunikan atau kunci asing.

8

InternalError

Subclass DatabaseError yang merujuk pada error internal modul basis data, seperti kursor yang tidak lagi aktif.

9

ProgrammingError

Subclass DatabaseError yang merujuk pada error seperti nama tabel yang buruk dan hal lain yang dapat dengan aman disalahkan pada Anda.

10

NotSupportedError

Subclass DatabaseError yang merujuk pada mencoba memanggil fungsionalitas yang tidak didukung.

Skrip Python Anda harus menangani error ini, tetapi sebelum menggunakan salah satu exception di atas, pastikan MySQLdb Anda memiliki dukungan untuk exception tersebut. Anda dapat mendapatkan lebih banyak informasi tentangnya dengan membaca spesifikasi DB API 2.0.


Python

  1. Menguasai Tipe Data Python: Panduan Praktis
  2. Menguasai Operator Python: Panduan Komprehensif
  3. Menguasai Pernyataan Pass Python: Panduan Praktis
  4. Menguasai Argumen Fungsi Python: Posisi, Kata Kunci, dan Parameter Default
  5. Menguasai Kamus Python: Pembuatan, Manipulasi, dan Teknik Lanjutan
  6. Menguasai Iterator Python: Cara Kerja dan Membuat Sendiri
  7. Penutupan (Closure) Python Dijelaskan: Cara Fungsi Bertingkat Mengambil Variabel
  8. Menguasai Python datetime: Panduan Praktis Tanggal, Waktu, dan Zona Waktu
  9. Menguasai time.sleep() Python: Best Practices, Multithreading, dan Contoh Dunia Nyata
  10. Tinjauan Python: Tinggi Level, Mudah Dibaca, Interaktif, dan Berorientasi Objek