Python
Halaman SebelumnyaHalaman Berikutnya
Standar Python untuk antarmuka database adalah Python DB-API. Sebagian besar antarmuka database Python mematuhi standar ini.
Anda dapat memilih database yang tepat untuk aplikasi Anda. Python Database API mendukung berbagai server database seperti −
Berikut 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 −
. berikutKita akan mempelajari semua konsep menggunakan MySQL, jadi mari kita bicara tentang modul MySQLdb.
MySQLdb adalah antarmuka untuk menghubungkan ke server database MySQL dari Python. Ini mengimplementasikan Python Database API v2.0 dan dibangun di atas MySQL C API.
Sebelum melanjutkan, pastikan Anda telah menginstal MySQLdb di komputer Anda. Cukup ketik berikut ini di skrip Python Anda dan jalankan
#!/usr/bin/python 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, gunakan perintah berikut
For Ubuntu, use the following command - $ sudo apt-get install python-pip python-dev libmysqlclient-dev For Fedora, use the following command - $ sudo dnf install python python-devel mysql-devel redhat-rpm-config gcc For Python command prompt, use the following command - pip install MySQL-python
Catatan Pastikan Anda memiliki hak akses root untuk menginstal modul di atas.
Sebelum menghubungkan ke database MySQL, pastikan hal berikut −
Anda telah membuat database TESTDB.
Anda telah membuat tabel EMPLOYEE di TESTDB.
Tabel ini memiliki bidang FIRST_NAME, LAST_NAME, AGE, SEX, dan INCOME.
User ID "testuser" dan kata sandi "test123" disetel untuk mengakses TESTDB.
Modul Python MySQLdb diinstal dengan benar di mesin Anda.
Anda telah melalui tutorial MySQL untuk memahami Dasar-dasar MySQL.
Berikut adalah contoh koneksi dengan database MySQL "TESTDB"
#!/usr/bin/python import MySQLdb # Open database connection db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # prepare a cursor object using cursor() method cursor = db.cursor() # execute SQL query using execute() method. cursor.execute("SELECT VERSION()") # Fetch a single row using fetchone() method. data = cursor.fetchone() print "Database version : %s " % data # disconnect from server db.close()
Saat menjalankan skrip ini, skrip ini menghasilkan hasil berikut di mesin Linux saya.
Database version : 5.0.45
Jika koneksi dibuat dengan sumber data, maka Objek Koneksi dikembalikan dan disimpan ke db untuk penggunaan lebih lanjut, jika tidak db diatur ke Tidak Ada. Selanjutnya, db objek digunakan untuk membuat kursor objek, yang pada gilirannya digunakan untuk mengeksekusi kueri SQL. Terakhir, sebelum keluar, ini memastikan bahwa koneksi database ditutup dan sumber daya dilepaskan.
Setelah koneksi database dibuat, kita siap untuk membuat tabel atau record ke dalam tabel database menggunakan execute metode kursor yang dibuat.
Mari kita buat tabel Database EMPLOYEE
#!/usr/bin/python import MySQLdb # Open database connection db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # prepare a cursor object using cursor() method cursor = db.cursor() # Drop table if it already exist using execute() method. cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") # Create table as per requirement sql = """CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )""" cursor.execute(sql) # disconnect from server db.close()
Ini diperlukan ketika Anda ingin membuat catatan Anda ke dalam tabel database.
Contoh berikut, mengeksekusi SQL INSERT pernyataan untuk membuat record ke dalam tabel EMPLOYEE
#!/usr/bin/python import MySQLdb # Open database connection db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # prepare a cursor object using cursor() method cursor = db.cursor() # Prepare SQL query to INSERT a record into the database. sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)""" try: # Execute the SQL command cursor.execute(sql) # Commit your changes in the database db.commit() except: # Rollback in case there is any error db.rollback() # disconnect from server db.close()
Contoh di atas dapat ditulis sebagai berikut untuk membuat query SQL secara dinamis
#!/usr/bin/python import MySQLdb # Open database connection db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # prepare a cursor object using cursor() method cursor = db.cursor() # Prepare SQL query to INSERT a record into the database. sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \ LAST_NAME, AGE, SEX, INCOME) \ VALUES ('%s', '%s', '%d', '%c', '%d' )" % \ ('Mac', 'Mohan', 20, 'M', 2000) try: # Execute the SQL command cursor.execute(sql) # Commit your changes in the database db.commit() except: # Rollback in case there is any error db.rollback() # disconnect from server db.close()
Segmen kode berikut adalah bentuk eksekusi lain di mana Anda dapat meneruskan parameter secara langsung −
.................................. user_id = "test123" password = "password" con.execute('insert into Login values("%s", "%s")' % \ (user_id, password)) ..................................
READ Operasi pada basis data apa pun berarti mengambil beberapa informasi yang berguna dari basis data.
Setelah koneksi database kami dibuat, Anda siap untuk membuat kueri ke dalam database ini. Anda dapat menggunakan fetchone() metode untuk mengambil satu record atau fetchall() metode untuk mengambil beberapa nilai dari tabel database.
ambil() Ini mengambil baris berikutnya dari kumpulan hasil kueri. Kumpulan hasil adalah objek yang dikembalikan saat objek kursor digunakan untuk mengkueri tabel.
ambil() Ini mengambil semua baris dalam set hasil. Jika beberapa baris telah diekstraksi dari kumpulan hasil, maka baris yang tersisa akan diambil dari kumpulan hasil.
jumlah baris Ini adalah atribut read-only dan mengembalikan jumlah baris yang dipengaruhi oleh metode execute().
Prosedur berikut menanyakan semua record dari tabel EMPLOYEE yang memiliki gaji lebih dari 1000 −
#!/usr/bin/python import MySQLdb # Open database connection db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # prepare a cursor object using cursor() method cursor = db.cursor() sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME > '%d'" % (1000) try: # Execute the SQL command cursor.execute(sql) # Fetch all the rows in a list of lists. results = cursor.fetchall() for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # Now print fetched result print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \ (fname, lname, age, sex, income ) except: print "Error: unable to fecth data" # disconnect from server db.close()
Ini akan menghasilkan hasil berikut
fname=Mac, lname=Mohan, age=20, sex=M, income=2000
UPDATE Operasi pada basis data apa pun berarti memperbarui satu atau lebih catatan, yang sudah tersedia dalam basis data.
Prosedur berikut memperbarui semua catatan yang memiliki SEX sebagai 'M' . Di sini, kami meningkatkan AGE semua pria satu tahun.
#!/usr/bin/python import MySQLdb # Open database connection db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # prepare a cursor object using cursor() method cursor = db.cursor() # Prepare SQL query to UPDATE required records sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M') try: # Execute the SQL command cursor.execute(sql) # Commit your changes in the database db.commit() except: # Rollback in case there is any error db.rollback() # disconnect from server db.close()
Operasi DELETE diperlukan ketika Anda ingin menghapus beberapa record dari database Anda. Berikut adalah prosedur untuk menghapus semua record dari EMPLOYEE dimana AGE lebih dari 20
#!/usr/bin/python import MySQLdb # Open database connection db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # prepare a cursor object using cursor() method cursor = db.cursor() # Prepare SQL query to DELETE required records sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # Execute the SQL command cursor.execute(sql) # Commit your changes in the database db.commit() except: # Rollback in case there is any error db.rollback() # disconnect from server db.close()
Transaksi adalah mekanisme yang memastikan konsistensi data. Transaksi memiliki empat properti berikut
Atomitas Transaksi selesai atau tidak terjadi sama sekali.
Konsistensi Transaksi harus dimulai dalam keadaan konsisten dan meninggalkan sistem dalam keadaan konsisten.
Isolasi Hasil antara transaksi tidak terlihat di luar transaksi saat ini.
Daya tahan Setelah transaksi dilakukan, efeknya tetap ada, bahkan setelah kegagalan sistem.
Python DB API 2.0 menyediakan dua metode untuk melakukan atau kembalikan sebuah transaksi.
Anda sudah tahu bagaimana menerapkan transaksi. Ini lagi contoh serupa
# Prepare SQL query to DELETE required records sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # Execute the SQL command cursor.execute(sql) # Commit your changes in the database db.commit() except: # Rollback in case there is any error db.rollback()
Komit 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 commit metode.
db.commit()
Jika Anda tidak puas dengan satu atau beberapa perubahan dan ingin mengembalikan perubahan tersebut sepenuhnya, gunakan rollback() metode.
Berikut adalah contoh sederhana untuk memanggil rollback() metode.
db.rollback()
Untuk memutuskan koneksi 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 detail implementasi tingkat DB yang lebih rendah, aplikasi Anda akan lebih baik memanggil commit atau rollback secara eksplisit.
Ada banyak sumber kesalahan. Beberapa contohnya adalah kesalahan sintaksis dalam pernyataan SQL yang dieksekusi, kegagalan koneksi, atau memanggil metode pengambilan untuk pegangan pernyataan yang sudah dibatalkan atau selesai.
DB API mendefinisikan sejumlah kesalahan yang harus ada di setiap modul database. Tabel berikut mencantumkan pengecualian ini.
No.No. | Pengecualian &Deskripsi |
---|---|
1 | Peringatan Digunakan untuk masalah non-fatal. Harus mensubkelaskan StandardError. |
2 | Kesalahan Kelas dasar untuk kesalahan. Harus mensubkelaskan StandardError. |
3 | Error Antarmuka Digunakan untuk kesalahan dalam modul database, bukan database itu sendiri. Harus membuat kesalahan subkelas. |
4 | DatabaseError Digunakan untuk kesalahan dalam database. Harus membuat kesalahan subkelas. |
5 | DataError Subclass dari DatabaseError yang merujuk pada kesalahan dalam data. |
6 | Kesalahan Operasional Subclass dari DatabaseError yang mengacu pada kesalahan seperti hilangnya koneksi ke database. Kesalahan ini umumnya di luar kendali skrip Python. |
7 | Kesalahan Integritas Subkelas DatabaseError untuk situasi yang akan merusak integritas relasional, seperti batasan keunikan atau kunci asing. |
8 | Kesalahan Internal Subkelas DatabaseError yang merujuk pada kesalahan internal ke modul database, seperti kursor tidak lagi aktif. |
9 | Kesalahan Pemrograman Subclass dari DatabaseError yang mengacu pada kesalahan seperti nama tabel yang buruk dan hal-hal lain yang dapat dengan aman disalahkan pada Anda. |
10 | Tidak DidukungError 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.
Python
Python strptime() Dalam artikel ini, Anda akan belajar membuat objek datetime dari string (dengan bantuan contoh). Video:Tanggal dan Waktu dengan Python strptime() metode membuat objek datetime dari string yang diberikan. Catatan: Anda tidak dapat membuat datetime objek dari setiap string. Strin
Untuk menggunakan konektivitas MySQL dengan Python, Anda harus memiliki pengetahuan tentang SQL Sebelum menyelam lebih dalam, mari kita pahami Apa itu MySQL? MySQL adalah database Open-Source dan salah satu jenis RDBMS (Relational Database Management System) terbaik. Co-founder MySQLdb adalah Mic
Apa itu urllib? urllib adalah modul Python yang dapat digunakan untuk membuka URL. Ini mendefinisikan fungsi dan kelas untuk membantu dalam tindakan URL. Dengan Python Anda juga dapat mengakses dan mengambil data dari internet seperti XML, HTML, JSON, dll. Anda juga dapat menggunakan Python untu
Jika Anda melewatkannya:Python 2 adalah secara resmi tidak didukung mulai 1 Januari 2020 . Jika Anda masih menggunakan Python 2.7, tingkatkan sekarang . Jika Anda tidak yakin versi apa yang Anda jalankan, periksa versi Python Anda. Banyak pengelola paket telah bermigrasi ke Python 3. Beberapa mas