Để xóa các bản ghi trong SQLite bằng Python, bạn phải làm theo các bước dưới đây-
- Mở kết nối tới cơ sở dữ liệu bằng cách gọi hàm
connect[]
và lấy đối tượngConnection
- Nhận đối tượng
Cursor
bằng cách gọi hàmcursor[]
- Truyền câu lệnh
Delete From
cho hàmexecute[]
- Gọi
commit[]
để lưu các thay đổi vào cơ sở dữ liệu và sau đó gọiclose[]
để đóng kết nối
Giả sử, bạn muốn xóa một bản ghi của bảng AndroidPhones có id là 6. Sau đó chạy bên dưới-
import sqlite3 conn = sqlite3.connect['mobiledevices.db'] print['Connected to database successfully.'] cur = conn.cursor[] id = [6] cur.execute["delete from androidphones where id=?", id] print['Record deleted successfully.'] conn.commit[] conn.close[]
Bài viết đề xuất
SQLite không có lệnh TRUNCATE TABLE rõ ràng như các cơ sở dữ liệu khác. Thay vào đó, nó đã thêm trình tối ưu hóa TRUNCATE vào câu lệnh DELETE. Để cắt bớt một bảng trong SQLite, bạn chỉ cần thực thi câu lệnh DELETE mà không cần mệnh đề WHERE. Trình tối ưu hóa TRUNCATE xử lý phần còn lại. Hãy giải thích
Thông thường, khi bạn thực hiện câu lệnh DELETE, cơ sở dữ liệu phải truy cập từng hàng trong bảng để thực hiện thao tác xóa. Trong SQLite, khi bạn thực thi một câu lệnh XÓA mà không có mệnh đề WHERE, trình tối ưu hóa TRUNCATE sẽ chạy thay vì hành vi xóa thông thường. Trình tối ưu hóa TRUNCATE xóa tất cả dữ liệu khỏi bảng mà không cần truy cập từng hàng trong bảng. Thao tác này nhanh hơn nhiều so với thao tác xóa thông thường
cú pháp
Cú pháp để cắt bớt một bảng trong SQLite [sử dụng trình tối ưu hóa TRUNCATE] là
DELETE FROM table_name;
Tham số hoặc Đối số
table_nameBảng mà bạn muốn cắt bớtGhi chú
- SQLite chỉ có thể sử dụng trình tối ưu hóa TRUNCATE nếu bảng [để cắt bớt] không có bất kỳ trình kích hoạt nào
Ví dụ
Bạn có thể chọn cắt bớt một bảng thay vì bỏ bảng và tạo lại nó. Cắt bớt bảng là phương pháp nhanh hơn để xóa tất cả dữ liệu khỏi bảng
Hãy xem một ví dụ về cách cắt bớt một bảng trong SQLite
Ví dụ
DELETE FROM positions;
Ví dụ này sẽ cắt bớt bảng có tên là vị trí và xóa tất cả các bản ghi khỏi bảng đó. Nếu không có trình kích hoạt nào trên bảng vị trí, SQLite sẽ sử dụng trình tối ưu hóa TRUNCATE để cắt bớt bảng. Dữ liệu sau đó được xóa mà không cần phải truy cập từng hàng của bảng vị trí
Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách thực hiện DELETE Query trong chương trình Python để xóa dữ liệu của bảng SQLite
Hướng dẫn này chủ yếu tập trung vào
- Xóa một hàng của bảng SQLite trong Python
- Xóa nhiều hàng của bảng SQLite trong Python
- Truy vấn được tham số hóa để xóa các bản ghi khỏi bảng SQLite trong Python
- Xóa một cột của bảng SQLite trong Python
- Xóa nhiều cột của bảng SQLite trong Python
- Truy vấn xóa hàng loạt bản ghi
- Xóa tất cả các hàng và tất cả các cột của bảng SQLite trong Python
Cơ sở dữ liệu của chúng tôi và bảng hiện diện bên trong cơ sở dữ liệu trông giống như
tên cơ sở dữ liệu. "dữ liệu. db”
tên bảng. “người dùng”
cột bảng. “id”, “tên”, “tuổi”, “giới tính”
Ghi chú. Chúng tôi có bốn bản ghi trong bảng cơ sở dữ liệu của chúng tôi. Chúng tôi sẽ thực hiện các thao tác trên các hồ sơ này
1]. Hàng đơn – Xóa bản ghi khỏi bảng cơ sở dữ liệu trong SQLite bằng Python
#Importing Database Library import sqlite3 # Database Connectivity try: con = sqlite3.connect["data.db"] cursor = con.cursor[] print["Connected to Database Successfully"] #Data Deletion Process-[ Single-Row ] query = "DELETE from USERS where id = ?" cursor.execute[query,[3,]] con.commit[] cursor.close[] except: print["Database Error"] #END
Đầu ra. Bảng NGƯỜI DÙNG sau khi xóa hàng. -
Giải thích. Tôi sẽ chỉ giải thích những điểm chính hoặc những điểm hoàn toàn mới đối với chúng tôi. Bởi vì chúng ta đang làm việc với cơ sở dữ liệu, nên tôi cho rằng các bạn đã biết về các khái niệm cốt lõi của python.
- Ở dòng 4, chúng tôi đã nhập thư viện sqlite3 của mình, vì các chức năng chúng tôi sử dụng trong chương trình của chúng tôi đã được xác định trước trong thư viện sqlite3
- Tại dòng 7 & 16, chúng tôi đã sử dụng phương pháp hữu ích để xử lý ngoại lệ sql
- Ở dòng 8 & 9 chúng ta đã khởi tạo biến "con" bằng phương thức connect[] với tên cơ sở dữ liệu là "data. db“. Phương thức connect[] được sử dụng ở đây được xác định trước trong thư viện sqlite3
- Tại dòng 12, chúng tôi đã khởi tạo biến "truy vấn" bằng truy vấn sql để xóa dữ liệu. Ở đây "người dùng" là tên của bảng của chúng tôi có trong cơ sở dữ liệu của chúng tôi "dữ liệu. db”
- Tại dòng 13 con trỏ. thực hiện [truy vấn] ở đây con trỏ lưu trữ kết nối cơ sở dữ liệu & thực thi [] là chức năng được xác định trong thư viện sqlite3. Hàm execut[] nhận hai tham số một là “ sql-query ” tham số thứ hai là giá trị sẽ được chuyển thành “ id” to delete data related to that particular “id” from database table.
- Ở dòng 14, cần gọi hàm commit[] sau khi thực hiện các thay đổi đối với cơ sở dữ liệu của chúng tôi
- Ở dòng 15, cũng cần phải đóng [] con trỏ của chúng ta. Về cơ bản con trỏ hoạt động như con trỏ
2]. Nhiều hàng – Xóa bản ghi khỏi bảng cơ sở dữ liệu trong SQLite bằng Python
#Importing Database Library import sqlite3 # Database Connectivity def deletion[ids]: try: con = sqlite3.connect["data.db"] cursor = con.cursor[] print["Connected to Database Successfully"] #Data Deletion Process - [ Multiple - Rows ] query = "DELETE from USERS where id = ?" cursor.executemany[query,ids] con.commit[] cursor.close[] except: print["Database Error"] ids = [[1,],[5,]] deletion[ids] #END
Đầu ra. Bảng NGƯỜI DÙNG sau khi xóa hàng. -
Giải thích. Giải thích chương trình giống như tôi đã thảo luận ở trên. Điểm khác biệt duy nhất là ở đây chúng ta đã sử dụng hàm executemany[] thay vì hàm execute[]. Và chúng tôi cũng đã chuyển danh sách id trong tham số chức năng làm đối số để xóa nhiều hàng.
Quan trọng. Bảng của chúng tôi chỉ còn lại một bản ghi, vì vậy tôi sẽ thêm 5 bản ghi nữa vào bảng của chúng tôi
Bảng của chúng tôi sau khi thêm bản ghi mới
3]. Truy vấn được tham số hóa – Xóa bản ghi khỏi bảng cơ sở dữ liệu trong SQLite bằng Python
#Importing Database Library import sqlite3 # Database Connectivity def deletion[ids]: try: con = sqlite3.connect["data.db"] cursor = con.cursor[] print["Connected to Database Successfully"] #Data Deletion Process - [ Parameterized - Query ] query = "DELETE from USERS where id = ?" cursor.execute[query,[ids,]] con.commit[] cursor.close[] except: print["Database Error"] deletion[4] #END
Đầu ra. Bảng NGƯỜI DÙNG sau khi xóa hàng. -
Giải thích. Giải thích chương trình giống như tôi đã thảo luận ở trên. Điểm khác biệt duy nhất là ở đây chúng tôi đã sử dụng hàm được tham số hóa để chuyển id làm đối số để xóa hàng đối với id.