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

Python - Akses Basis Data MySQL

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 −

. berikut

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

Apa itu 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.

Bagaimana cara Menginstal MySQLdb?

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.

Koneksi Basis Data

Sebelum menghubungkan ke database MySQL, pastikan hal berikut −

Contoh

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.

Membuat Tabel Basis Data

Setelah koneksi database dibuat, kita siap untuk membuat tabel atau record ke dalam tabel database menggunakan execute metode kursor yang dibuat.

Contoh

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()

MASUKKAN Operasi

Ini diperlukan ketika Anda ingin membuat catatan Anda ke dalam tabel database.

Contoh

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()

Contoh

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))
..................................

Operasi BACA

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.

Contoh

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

Operasi Pembaruan

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.

Contoh

#!/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 HAPUS

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

Contoh

#!/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()

Melakukan Transaksi

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

Python DB API 2.0 menyediakan dua metode untuk melakukan atau kembalikan sebuah transaksi.

Contoh

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()

Operasi COMMIT

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()

OPERASI ROLLBACK

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()

Memutuskan Sambungan Basis Data

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.

Menangani Kesalahan

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

  1. Tipe Data Python
  2. Operator Python
  3. Pernyataan lulus python
  4. Argumen Fungsi Python
  5. Kamus Python
  6. Python Iterator
  7. Penutupan Python
  8. Tanggal waktu Python
  9. Python tidur()
  10. Python - Ikhtisar