Tutorial operasi python database MySQL Terbaik Pada tahun 2024, Dalam tutorial ini Anda dapat mempelajari Apa MySQLdb?,Cara menginstal MySQLdb?,database Connectivity,Membuat tabel database,database insert,query database,update database,penghapusan,Menghapus data menghapus data untuk meja, contoh berikut menunjukkan menghapus data dalam tabel EMPLOYEE lebih besar dari semua AGE Data 20: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 删除语句 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # 执行SQL语句 cursor.execute(sql) # 提交修改 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭连接 db.close(),Urusan eksekutif,Penanganan kesalahan,
Python antarmuka database standar untuk Python DB-API, Python DB-API menyediakan antarmuka pemrograman aplikasi database untuk pengembang.
Database Python antarmuka mendukung database yang sangat besar, Anda dapat memilih proyek database Anda:
Anda dapat mengakses antarmuka database Python dan API Lihat daftar rinci database didukung.
database yang berbeda Anda perlu men-download modul DB API yang berbeda, misalnya, Anda perlu mengakses database Oracle dan data Mysql, Anda perlu men-download Oracle dan MySQL modul basis data.
DB-API adalah spesifikasi yang mendefinisikan satu set objek dan database harus mengakses mode, dalam rangka untuk menyediakan antarmuka yang konsisten untuk mengakses database untuk berbagai sistem dan berbagai program antarmuka database.
Python DB-API, untuk sebagian besar database mengimplementasikan antarmuka, menggunakannya setelah menghubungkan database, Anda dapat menggunakan cara yang sama setiap database.
Python DB-API menggunakan proses:
MySQLdb adalah sebuah antarmuka untuk Python Mysql link database, yang mengimplementasikan Python database API spesifikasi V2.0, berdasarkan pembentukan API MySQL C.
Untuk menulis skrip MySQL dengan DB-API, Anda harus memastikan bahwa Anda telah menginstal MySQL. Salin kode berikut, dan jalankan:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb
Jika output adalah sebagai berikut setelah eksekusi, yang berarti Anda tidak memiliki modul MySQLdb diinstal:
Traceback (most recent call last): File "test.py", line 3, in <module> import MySQLdb ImportError: No module named MySQLdb
Instal MySQLdb, kunjungi http://sourceforge.net/projects/mysql-python , (platform Linux dapat diakses: https://pypi.python.org/pypi/MySQL-python ) Dari sini memilih untuk platform Anda paket instalasi, pre-dikompilasi ke binari dan paket kode sumber.
Jika Anda memilih versi rilis biner, proses instalasi meminta untuk menyelesaikan instalasi dasar. Jika menginstal dari source code, Anda perlu beralih ke MySQLdb direktori rilis tingkat atas, dan ketik perintah berikut:
$ gunzip MySQL-python-1.2.2.tar.gz $ tar -xvf MySQL-python-1.2.2.tar $ cd MySQL-python-1.2.2 $ python setup.py build $ python setup.py install
Catatan: Pastikan Anda memiliki hak akses root untuk menginstal modul yang dijelaskan di atas.
Sebelum menghubungkan ke database, pastikan item berikut:
Contoh-contoh berikut link database testdb Mysql:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # 使用execute方法执行SQL语句 cursor.execute("SELECT VERSION()") # 使用 fetchone() 方法获取一条数据库。 data = cursor.fetchone() print "Database version : %s " % data # 关闭数据库连接 db.close()
Pelaksanaan script di atas output hasil adalah sebagai berikut:
Database version : 5.0.45
Jika koneksi database ada, kita dapat menggunakan metode mengeksekusi () untuk membuat tabel untuk database, membuat KARYAWAN meja ditampilkan sebagai berikut:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # 如果数据表已经存在使用 execute() 方法删除表。 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") # 创建数据表SQL语句 sql = """CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )""" cursor.execute(sql) # 关闭数据库连接 db.close()
Contoh berikut menggunakan mengeksekusi pernyataan SQL INSERT untuk memasukkan catatan ke KARYAWAN meja:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)""" try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # Rollback in case there is any error db.rollback() # 关闭数据库连接 db.close()
Contoh di atas juga dapat ditulis sebagai berikut:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \ LAST_NAME, AGE, SEX, INCOME) \ VALUES ('%s', '%s', '%d', '%c', '%d' )" % \ ('Mac', 'Mohan', 20, 'M', 2000) try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close()
Kode berikut menggunakan variabel untuk melewatkan parameter ke sebuah pernyataan SQL:
ididididididididididididididididid user_id = "test123" password = "password" con.execute('insert into Login values("%s", "%s")' % \ (user_id, password)) ididididididididididididididididid
Python Mysql query menggunakan metode fetchone () untuk mendapatkan data tunggal menggunakan fetchAll metode () untuk mendapatkan sejumlah data.
Pilihan KARYAWAN meja gaji (upah) data lapangan lebih besar dari semua 1000:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 查询语句 sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME > '%d'" % (1000) try: # 执行SQL语句 cursor.execute(sql) # 获取所有记录列表 results = cursor.fetchall() for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # 打印结果 print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \ (fname, lname, age, sex, income ) except: print "Error: unable to fecth data" # 关闭数据库连接 db.close()
Hasil eksekusi script di atas adalah sebagai berikut:
fname=Mac, lname=Mohan, age=20, sex=M, income=2000
Data memperbarui operasi untuk memperbarui tabel data, contoh berikut akan testdb bidang SEX meja semua perubahan 'M', bidang AGE nilainya 1:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 更新语句 sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M') try: # 执行SQL语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close()
Menghapus data menghapus data untuk meja, contoh berikut menunjukkan menghapus data dalam tabel EMPLOYEE lebih besar dari semua AGE Data 20:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 删除语句 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # 执行SQL语句 cursor.execute(sql) # 提交修改 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭连接 db.close()
mekanisme transaksi untuk memastikan konsistensi data.
Jasa harus memiliki empat sifat: atomicity, konsistensi, isolasi, daya tahan. Keempat sifat sering disebut sebagai sifat ACID.
Python DB API 2.0 menyediakan dua metode transaksi melakukan atau rollback.
# SQL删除记录语句 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # 执行SQL语句 cursor.execute(sql) # 向数据库提交 db.commit() except: # 发生错误时回滚 db.rollback()
Untuk database transaksional, pemrograman database dengan Python, ketika kursor didirikan, otomatis dimulai transaksi database terlihat.
komit metode () untuk semua metode update kursor, rollback () untuk memutar kembali semua operasi dari kursor saat ini. Setiap metode telah memulai bisnis baru.
DB API mendefinisikan sejumlah kesalahan dan operasi abnormal dari database, tabel berikut berisi daftar kesalahan dan pengecualian:
abnormal | deskripsi |
---|---|
peringatan | Ketika ada peringatan serius untuk memicu, seperti memasukkan data terpotong, dan sebagainya. Ini harus menjadi subclass dari StandardError. |
kesalahan | Semua kelas kesalahan lain selain peringatan. Ini harus menjadi subclass dari StandardError. |
InterfaceError | Kebakaran ketika modul antarmuka database memiliki kesalahan sendiri (bukan database error) terjadi. Ini harus menjadi subclass dari Kesalahan. |
DatabaseError | Memicu dan kesalahan yang berhubungan dengan database. Ini harus menjadi subclass dari Kesalahan. |
DataError | Ketika ada terjadi kesalahan pengolahan data bila dipicu, misalnya: membagi dengan nol kesalahan, data dari jangkauan, dan sebagainya. Ini harus menjadi subclass dari DatabaseError. |
OperationalError | Hal ini mengacu pada non-pengguna dikontrol, tapi kesalahan terjadi saat database. Sebagai contoh: sengaja terputus, nama database tidak ditemukan, transaksi gagal, kesalahan alokasi memori, terjadi dll operasi database error. Ini harus menjadi subclass dari DatabaseError. |
IntegrityError | Terkait integritas kesalahan, seperti cek kunci asing gagal dan sejenisnya. Itu harus DatabaseError subclass. |
internalerror | error database internal, seperti kursor (kursor) gagal, sinkronisasi transaksi gagal dan sebagainya. Itu harus DatabaseError subclass. |
ProgrammingError | kesalahan prosedural, seperti tabel data (tabel) tidak ditemukan atau sudah ada, pernyataan SQL syntax error, jumlah kesalahan parameter, dan sebagainya. Ini harus menjadi subclass dari DatabaseError. |
NotSupportedError | Tidak didukung error, mengacu pada penggunaan fungsi seperti API atau database tidak mendukung. Misalnya, menggunakan .rollback pada fungsi koneksi objek (), tetapi database tidak mendukung transaksi atau transaksi telah ditutup. Ini harus menjadi subclass dari DatabaseError. |