Bagaimana cara membaca database dari tabel dengan python?

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

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

  • Pengganggu
  • mSQL
  • MySQL
  • PostgreSQL
  • Microsoft SQLServer 2000
  • Informix
  • Interbase
  • Peramal
  • Sybase

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

DB API memberikan standar minimal untuk bekerja dengan database menggunakan struktur dan sintaks Python jika memungkinkan. API ini mencakup yang berikut −

  • Mengimpor modul API
  • Memperoleh koneksi dengan database
  • Mengeluarkan pernyataan SQL dan prosedur tersimpan
  • Menutup koneksi

Kami 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 saya menginstal MySQLdb?

Sebelum melanjutkan, pastikan Anda telah menginstal MySQLdb di mesin Anda. Cukup ketikkan yang berikut dalam skrip Python Anda dan jalankan −

#!/usr/bin/python

import MySQLdb

Jika menghasilkan hasil seperti berikut, berarti modul MySQLdb tidak terpasang−

Traceback (most recent call last):
   File "test.py", line 3, in 
      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-hal berikut −

  • Anda telah membuat database TESTDB

  • Anda telah membuat tabel KARYAWAN di TESTDB

  • Tabel ini memiliki kolom FIRST_NAME, LAST_NAME, AGE, SEX, dan INCOME

  • User ID "testuser" dan password "test123" diatur untuk mengakses TESTDB

  • Modul Python MySQLdb diinstal dengan benar di mesin Anda

  • Anda telah melalui tutorial MySQL untuk memahami Dasar-Dasar MySQL

Contoh

Berikut 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, ia 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 digunakan lebih lanjut, jika tidak, db disetel ke Tidak Ada. Selanjutnya, objek db digunakan untuk membuat objek kursor, yang pada gilirannya digunakan untuk mengeksekusi kueri SQL. Terakhir, sebelum keluar, pastikan koneksi database ditutup dan sumber daya dilepaskan

Membuat Tabel Database

Setelah koneksi basis data dibuat, kami siap untuk membuat tabel atau catatan ke dalam tabel basis data menggunakan metode eksekusi dari 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()

Operasi MASUKKAN

Ini diperlukan saat Anda ingin membuat record Anda ke dalam tabel database

Contoh

Contoh berikut, mengeksekusi pernyataan SQL INSERT untuk membuat record ke 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 kueri 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))
..................................
_

BACA Operasi

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

Setelah koneksi basis data kami terjalin, Anda siap membuat kueri ke basis data ini. Anda dapat menggunakan metode fetchone() untuk mengambil record tunggal 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, baris yang tersisa akan diambil dari kumpulan hasil

  • rowcount − Ini adalah atribut read-only dan mengembalikan jumlah baris yang dipengaruhi oleh metode execution()

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 -

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

Perbarui Operasi

PEMBARUAN Operasi 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 sebagai 'M'. Di sini, kami meningkatkan AGE semua laki-laki satu tahun

Contoh

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

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

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

Melakukan Transaksi

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

  • Atomicity − Entah transaksi selesai atau tidak ada yang terjadi sama sekali

  • Konsistensi - Transaksi harus dimulai dalam keadaan konsisten dan meninggalkan sistem dalam keadaan konsisten

  • Isolasi − Hasil perantara dari suatu transaksi tidak terlihat di luar transaksi saat ini

  • Ketahanan - Setelah transaksi dilakukan, efeknya tetap ada, bahkan setelah kegagalan sistem

Python DB API 2. 0 menyediakan dua metode untuk melakukan atau membatalkan transaksi

Contoh

Anda sudah tahu bagaimana menerapkan transaksi. Ini lagi contoh serupa −

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

Operasi KOMIT

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 metode komit

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

Operasi KEMBALI

Jika Anda tidak puas dengan satu atau lebih perubahan dan Anda ingin mengembalikan perubahan itu sepenuhnya, maka gunakan metode rollback()

Berikut adalah contoh sederhana untuk memanggil metode rollback()

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

Memutuskan Basis Data

Untuk memutuskan koneksi Database, gunakan metode close()

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

Jika koneksi ke database ditutup oleh pengguna dengan metode close(), semua transaksi yang belum selesai akan dibatalkan oleh DB. Namun, alih-alih bergantung pada detail implementasi tingkat rendah DB mana pun, aplikasi Anda akan lebih baik memanggil komit atau rollback secara eksplisit

Menangani Kesalahan

Ada banyak sumber kesalahan. Beberapa contoh 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 error yang harus ada di setiap modul database. Tabel berikut mencantumkan pengecualian ini

Sr. Tidak. Pengecualian & Deskripsi1

Peringatan

Digunakan untuk masalah non-fatal. Harus membuat subkelas StandardError

2

Kesalahan

Kelas dasar untuk kesalahan. Harus membuat subkelas StandardError

3

InterfaceError

Digunakan untuk error pada modul database, bukan database itu sendiri. Harus subkelas Kesalahan

4

Kesalahan Database

Digunakan untuk kesalahan dalam database. Harus subkelas Kesalahan

5

DataError

Subclass dari DatabaseError yang mengacu pada kesalahan dalam data

6

Kesalahan Operasional

Subkelas dari DatabaseError yang mengacu pada kesalahan seperti hilangnya koneksi ke database. Kesalahan ini umumnya di luar kendali pembuat skrip Python

7

IntegrityError

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

8

Kesalahan internal

Subkelas dari DatabaseError yang mengacu pada kesalahan internal modul database, seperti kursor tidak lagi aktif

9

ProgrammingError

Subkelas 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 dari DatabaseError yang merujuk pada mencoba 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 lebih banyak informasi tentang mereka dengan membaca DB API 2. 0 spesifikasi

Bagaimana cara membaca tabel database di panda?

Saya akan menggunakan langkah-langkah berikut untuk menjelaskan penggunaan panda read_sql(). .
Sintaks read_sql()
Buat tabel database di sqlite3
Masukkan data ke dalam tabel
Jalankan kueri SQL dengan menggunakan panda read_sql()
Gunakan read_sql_query()
Gunakan read_sql_table()
Filter baris dari tabel SQL

Bagaimana cara mengambil data dari database MySQL dengan Python?

Anda dapat mengambil/mengambil data dari tabel di MySQL menggunakan kueri SELECT. Kueri/pernyataan ini mengembalikan konten dari tabel yang ditentukan dalam bentuk tabel dan disebut sebagai himpunan hasil

Bagaimana cara membuka tabel SQL dengan Python?

Berikut adalah langkah sederhana untuk memulai. .
Langkah 1 — Mengimpor SQLite dan Panda. Untuk memulai, kita perlu mengimpor SQLite ke notebook Jupyter kita. .
Langkah 2 — Menghubungkan database Anda. .
Langkah 3 — Objek Kursor. .
Langkah 4 — Menulis Permintaan. .
Langkah 5 — Menjalankan Kueri. .
Langkah 6 — Menutup koneksi Anda. .
Langkah 7 — BONUS (Mengapa Python dengan SQL?)

Bagaimana cara mencetak data dari database dengan Python?

Langkah 1. Terhubung ke database menggunakan metode connect(). Langkah 2. Buat perintah untuk mengeksekusi kueri menggunakan metode kursor(). Langkah 3. Dan kemudian kami telah menggunakan metode fetchAll() yang disimpan dalam baris. Langkah 4. Cetak semua elemen baris