Hướng dẫn dùng python3 sqlite python - use python3 sqlite python

Thứ ba, 02/06/2020 | 00:00 GMT+7

SQLite là một database SQL dựa trên file , độc lập. SQLite đi kèm với Python và được dùng trong bất kỳ ứng dụng Python nào của bạn mà không cần phải cài đặt bất kỳ phần mềm bổ sung nào.

Trong hướng dẫn này, ta sẽ xem xét mô-đun

print[connection.total_changes] 
7 trong Python 3 . Ta sẽ tạo kết nối đến database SQLite, thêm bảng vào database đó, chèn dữ liệu vào bảng đó, đọc và sửa đổi dữ liệu trong bảng đó.

Đối với hướng dẫn này, ta sẽ làm việc chủ yếu với danh mục cá mà ta cần sửa đổi khi cá được thêm vào hoặc xóa khỏi bể cá hư cấu.

Yêu cầu

Để tận dụng tối đa hướng dẫn này, bạn nên làm quen với lập trình bằng Python và một số kiến thức cơ bản về SQL.

Bạn có thể xem lại các hướng dẫn này để biết thông tin cơ bản cần thiết:

  • Cách viết mã bằng Python3
  • Giới thiệu về Truy vấn trong MySQL

Bước 1 - Tạo kết nối với database SQLite

Khi ta kết nối với database SQLite, ta đang truy cập dữ liệu cuối cùng nằm trong một file trên máy tính của ta . Database SQLite là công cụ SQL có đầy đủ tính năng được dùng cho nhiều mục đích. Hiện tại, ta sẽ xem xét một database theo dõi số lượng cá tại một bể cá giả tưởng.

Ta có thể kết nối với database SQLite bằng module Python

print[connection.total_changes] 
7 :

import sqlite3  connection = sqlite3.connect["aquarium.db"] 

print[connection.total_changes] 
9 cấp cho chương trình Python của ta quyền truy cập vào module
print[connection.total_changes] 
7 . Hàm

Output

0
1 trả về một đối tượng

Output

0
2 mà ta sẽ sử dụng để tương tác với database SQLite được giữ trong file

Output

0
3 Các

Output

0
3 file được tạo ra tự động bởi

Output

0
1 nếu

Output

0
3 không tồn tại trên máy tính của ta .

Ta có thể xác minh ta đã tạo thành công đối tượng

Output

0
7 của bạn bằng lệnh:

print[connection.total_changes] 

Nếu ta chạy mã Python này, ta sẽ thấy kết quả như:

Output

0

Output

0
8 là tổng số hàng database đã được thay đổi theo

Output

0
7 . Vì ta chưa thực hiện bất kỳ lệnh SQL nào nên 0
cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
0 là chính xác.

Nếu bất cứ lúc nào, ta thấy mình muốn bắt đầu lại hướng dẫn này, ta có thể xóa file

Output

0
3 khỏi máy tính của bạn .

Lưu ý: Cũng có thể kết nối với database SQLite nằm hoàn toàn trong bộ nhớ [chứ không phải trong file ] bằng cách chuyển chuỗi đặc biệt

cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
2 vào

Output

0
1 . Ví dụ:
cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
4 . A
cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
2 Database SQLite sẽ không xuất hiện ngay khi chương trình Python của bạn thoát. Điều này có thể thuận tiện nếu bạn muốn một sandbox tạm thời để thử một cái gì đó trong SQLite và không cần lưu giữ bất kỳ dữ liệu nào sau khi chương trình của bạn thoát.
Cũng có thể kết nối với database SQLite nằm hoàn toàn trong bộ nhớ [chứ không phải trong file ] bằng cách chuyển chuỗi đặc biệt
cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
2 vào

Output

0
1 . Ví dụ:
cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
4 . A
cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
2 Database SQLite sẽ không xuất hiện ngay khi chương trình Python của bạn thoát. Điều này có thể thuận tiện nếu bạn muốn một sandbox tạm thời để thử một cái gì đó trong SQLite và không cần lưu giữ bất kỳ dữ liệu nào sau khi chương trình của bạn thoát.

Bước 2 - Thêm dữ liệu vào database SQLite

Bây giờ ta đã kết nối với

Output

0
3 database SQLite, ta có thể bắt đầu chèn và đọc dữ liệu từ nó.

Trong database SQL, dữ liệu được lưu trữ trong các bảng. Các bảng xác định một tập hợp các cột và chứa 0 hoặc nhiều hàng với dữ liệu cho mỗi cột được xác định.

Ta sẽ tạo một bảng có tên

cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
7 để theo dõi các dữ liệu sau:

Tên loài tank_number
Sammy cá mập 1
Jamie mực nang 7

Bảng

cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
7 sẽ theo dõi giá trị cho
cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
9 ,
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
0 và số
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
1 cho mỗi con cá trong bể cá. Hai hàng
cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
7 ví dụ được liệt kê: một hàng cho
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
3 tên là
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
4 và một hàng cho
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
5 tên là
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
6 .

Ta có thể tạo bảng

cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
7 này trong SQLite bằng cách sử dụng

Output

0
7 mà ta đã thực hiện ở Bước 1:

cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 

cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
9 trả về một đối tượng
rows = cursor.execute["SELECT name, species, tank_number FROM fish"].fetchall[] print[rows] 
0 .
rows = cursor.execute["SELECT name, species, tank_number FROM fish"].fetchall[] print[rows] 
0 đối tượng
rows = cursor.execute["SELECT name, species, tank_number FROM fish"].fetchall[] print[rows] 
0 cho phép ta gửi các câu lệnh SQL đến database SQLite bằng cách sử dụng
rows = cursor.execute["SELECT name, species, tank_number FROM fish"].fetchall[] print[rows] 
3 . Chuỗi
rows = cursor.execute["SELECT name, species, tank_number FROM fish"].fetchall[] print[rows] 
4 là một câu lệnh SQL tạo một bảng có tên
cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
7 với ba cột được mô tả trước đó:
cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
9 của loại
rows = cursor.execute["SELECT name, species, tank_number FROM fish"].fetchall[] print[rows] 
7 , loài thuộc loại
rows = cursor.execute["SELECT name, species, tank_number FROM fish"].fetchall[] print[rows] 
7 và
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
1 của loại

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]
0 .

Bây giờ ta đã tạo một bảng, ta có thể chèn các hàng dữ liệu vào đó:

cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 

Ta gọi

rows = cursor.execute["SELECT name, species, tank_number FROM fish"].fetchall[] print[rows] 
3 hai lần: một lần để chèn một hàng cho cá mập
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
4 trong bể

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]
3 và một lần để chèn một hàng cho mực nang
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
6 trong bể

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]
5 .

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]
6 là một câu lệnh SQL cho phép ta thêm các hàng vào một bảng.

Trong phần tiếp theo, ta sẽ sử dụng câu lệnh SQL

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]
7 để kiểm tra các hàng mà ta vừa chèn vào bảng
cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
7 .

Bước 3 - Đọc dữ liệu từ database SQLite

Trong Bước 2, ta đã thêm hai hàng vào bảng SQLite có tên là

cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
7 . Ta có thể truy xuất các hàng đó bằng

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]
7 SQL:

rows = cursor.execute["SELECT name, species, tank_number FROM fish"].fetchall[] print[rows] 

Nếu ta chạy mã này, ta sẽ thấy kết quả như sau:

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]

Hàm

rows = cursor.execute["SELECT name, species, tank_number FROM fish"].fetchall[] print[rows] 
3 chạy

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]
7 để truy xuất giá trị cho các cột
cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
9 ,
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
0 và
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
1 trong bảng
cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
7 .
target_fish_name = "Jamie" rows = cursor.execute[     "SELECT name, species, tank_number FROM fish WHERE name = ?",     [target_fish_name,], ].fetchall[] print[rows] 
7 truy xuất tất cả các kết quả của

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]
7 . Khi ta
target_fish_name = "Jamie" rows = cursor.execute[     "SELECT name, species, tank_number FROM fish WHERE name = ?",     [target_fish_name,], ].fetchall[] print[rows] 
9 ta thấy một danh sách gồm hai bộ giá trị. Mỗi bộ có ba mục nhập; một mục nhập cho mỗi cột ta đã chọn từ bảng
cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
7 . Hai bộ giá trị có dữ liệu mà ta đã chèn trong Bước 2: một bộ cho
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
3
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
4 và một bộ cho
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
5
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
6 .

Nếu ta muốn truy xuất các hàng trong bảng

cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
7 phù hợp với một bộ tiêu chí cụ thể, ta có thể sử dụng

Output

[['Jamie', 'cuttlefish', 7]]
6 :

target_fish_name = "Jamie" rows = cursor.execute[     "SELECT name, species, tank_number FROM fish WHERE name = ?",     [target_fish_name,], ].fetchall[] print[rows] 

Nếu ta chạy điều này, ta sẽ thấy kết quả như sau:

Output

[['Jamie', 'cuttlefish', 7]]

Như với ví dụ trước,

Output

[['Jamie', 'cuttlefish', 7]]
7 cho phép ta tìm nạp tất cả các kết quả của một

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]
7 .

Output

[['Jamie', 'cuttlefish', 7]]
6 trong

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]
7 lọc các hàng có giá trị của
cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
9 là
new_tank_number = 2 moved_fish_name = "Sammy" cursor.execute[     "UPDATE fish SET tank_number = ? WHERE name = ?",     [new_tank_number, moved_fish_name] ] 
2 . Chú ý rằng ta sử dụng
new_tank_number = 2 moved_fish_name = "Sammy" cursor.execute[     "UPDATE fish SET tank_number = ? WHERE name = ?",     [new_tank_number, moved_fish_name] ] 
3 để thay thế biến
new_tank_number = 2 moved_fish_name = "Sammy" cursor.execute[     "UPDATE fish SET tank_number = ? WHERE name = ?",     [new_tank_number, moved_fish_name] ] 
2 của ta vào

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]
7 . Ta dự kiến sẽ chỉ khớp một hàng và thực sự ta chỉ thấy hàng dành cho
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
6 mà
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
5 trả lại.

Cảnh báo: Không bao giờ sử dụng các phép toán chuỗi Python để tạo động một chuỗi câu lệnh SQL. Sử dụng các hoạt động chuỗi Python để tập hợp một chuỗi câu lệnh SQL khiến bạn dễ bị tấn công SQL injection . Các cuộc tấn công SQL injection được dùng để ăn cắp, thay đổi hoặc sửa đổi dữ liệu được lưu trữ trong database của bạn. Luôn sử dụng dấu

new_tank_number = 2 moved_fish_name = "Sammy" cursor.execute[     "UPDATE fish SET tank_number = ? WHERE name = ?",     [new_tank_number, moved_fish_name] ] 
3 trình giữ chỗ trong câu lệnh SQL của bạn để thay thế động các giá trị từ chương trình Python của bạn.
new_tank_number = 2 moved_fish_name = "Sammy" cursor.execute[     "UPDATE fish SET tank_number = ? WHERE name = ?",     [new_tank_number, moved_fish_name] ] 
9 một bộ giá trị làm đối số thứ hai cho
new_tank_number = 2 moved_fish_name = "Sammy" cursor.execute[     "UPDATE fish SET tank_number = ? WHERE name = ?",     [new_tank_number, moved_fish_name] ] 
9 để liên kết các giá trị của bạn với câu lệnh SQL. Mô hình thay thế này cũng được trình bày ở đây và trong các phần khác của hướng dẫn này.
Không bao giờ sử dụng các phép toán chuỗi Python để tạo động một chuỗi câu lệnh SQL. Sử dụng các hoạt động chuỗi Python để tập hợp một chuỗi câu lệnh SQL khiến bạn dễ bị tấn công SQL injection . Các cuộc tấn công SQL injection được dùng để ăn cắp, thay đổi hoặc sửa đổi dữ liệu được lưu trữ trong database của bạn. Luôn sử dụng dấu
new_tank_number = 2 moved_fish_name = "Sammy" cursor.execute[     "UPDATE fish SET tank_number = ? WHERE name = ?",     [new_tank_number, moved_fish_name] ] 
3 trình giữ chỗ trong câu lệnh SQL của bạn để thay thế động các giá trị từ chương trình Python của bạn.
new_tank_number = 2 moved_fish_name = "Sammy" cursor.execute[     "UPDATE fish SET tank_number = ? WHERE name = ?",     [new_tank_number, moved_fish_name] ] 
9 một bộ giá trị làm đối số thứ hai cho
new_tank_number = 2 moved_fish_name = "Sammy" cursor.execute[     "UPDATE fish SET tank_number = ? WHERE name = ?",     [new_tank_number, moved_fish_name] ] 
9 để liên kết các giá trị của bạn với câu lệnh SQL. Mô hình thay thế này cũng được trình bày ở đây và trong các phần khác của hướng dẫn này.

Bước 4 - Sửa đổi dữ liệu trong database SQLite

Các hàng trong database SQLite có thể được sửa đổi bằng cách sử dụng câu lệnh SQL

print[connection.total_changes] 
01 và
print[connection.total_changes] 
02 .

Ví dụ, giả sử rằng con cá mập Sammy đã được chuyển đến bể số 2. Ta có thể thay đổi hàng của Sammy trong bảng

cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
7 để phản ánh sự thay đổi này:

new_tank_number = 2 moved_fish_name = "Sammy" cursor.execute[     "UPDATE fish SET tank_number = ? WHERE name = ?",     [new_tank_number, moved_fish_name] ] 

Ta đưa ra câu lệnh

print[connection.total_changes] 
01 SQL để thay đổi
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
1 của
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
4 thành giá trị mới của nó là
print[connection.total_changes] 
07 .

Output

[['Jamie', 'cuttlefish', 7]]
6 trong câu lệnh
print[connection.total_changes] 
01 đảm bảo ta chỉ thay đổi giá trị của
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
1 nếu một hàng có
print[connection.total_changes] 
11 .

Nếu ta chạy

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]
7 sau, ta có thể xác nhận bản cập nhật của ta đã được thực hiện chính xác:

rows = cursor.execute["SELECT name, species, tank_number FROM fish"].fetchall[] print[rows] 

Nếu ta chạy điều này, ta sẽ thấy kết quả như sau:

print[connection.total_changes] 
1

Như với ví dụ trước,

Output

[['Jamie', 'cuttlefish', 7]]
7 cho phép ta tìm nạp tất cả các kết quả của một

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]
7 .

Output

[['Jamie', 'cuttlefish', 7]]
6 trong

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]
7 lọc các hàng có giá trị của
cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
9 là
new_tank_number = 2 moved_fish_name = "Sammy" cursor.execute[     "UPDATE fish SET tank_number = ? WHERE name = ?",     [new_tank_number, moved_fish_name] ] 
2 . Chú ý rằng ta sử dụng
new_tank_number = 2 moved_fish_name = "Sammy" cursor.execute[     "UPDATE fish SET tank_number = ? WHERE name = ?",     [new_tank_number, moved_fish_name] ] 
3 để thay thế biến
new_tank_number = 2 moved_fish_name = "Sammy" cursor.execute[     "UPDATE fish SET tank_number = ? WHERE name = ?",     [new_tank_number, moved_fish_name] ] 
2 của ta vào

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]
7 . Ta dự kiến sẽ chỉ khớp một hàng và thực sự ta chỉ thấy hàng dành cho
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
6 mà
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
5 trả lại.

Cảnh báo: Không bao giờ sử dụng các phép toán chuỗi Python để tạo động một chuỗi câu lệnh SQL. Sử dụng các hoạt động chuỗi Python để tập hợp một chuỗi câu lệnh SQL khiến bạn dễ bị tấn công SQL injection . Các cuộc tấn công SQL injection được dùng để ăn cắp, thay đổi hoặc sửa đổi dữ liệu được lưu trữ trong database của bạn. Luôn sử dụng dấu

new_tank_number = 2 moved_fish_name = "Sammy" cursor.execute[     "UPDATE fish SET tank_number = ? WHERE name = ?",     [new_tank_number, moved_fish_name] ] 
3 trình giữ chỗ trong câu lệnh SQL của bạn để thay thế động các giá trị từ chương trình Python của bạn.
new_tank_number = 2 moved_fish_name = "Sammy" cursor.execute[     "UPDATE fish SET tank_number = ? WHERE name = ?",     [new_tank_number, moved_fish_name] ] 
9 một bộ giá trị làm đối số thứ hai cho
new_tank_number = 2 moved_fish_name = "Sammy" cursor.execute[     "UPDATE fish SET tank_number = ? WHERE name = ?",     [new_tank_number, moved_fish_name] ] 
9 để liên kết các giá trị của bạn với câu lệnh SQL. Mô hình thay thế này cũng được trình bày ở đây và trong các phần khác của hướng dẫn này.

Bước 4 - Sửa đổi dữ liệu trong database SQLite

print[connection.total_changes] 
2

Các hàng trong database SQLite có thể được sửa đổi bằng cách sử dụng câu lệnh SQL

print[connection.total_changes] 
01 và
print[connection.total_changes] 
02 .

Ví dụ, giả sử rằng con cá mập Sammy đã được chuyển đến bể số 2. Ta có thể thay đổi hàng của Sammy trong bảng

cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
7 để phản ánh sự thay đổi này:

rows = cursor.execute["SELECT name, species, tank_number FROM fish"].fetchall[] print[rows] 

Ta đưa ra câu lệnh

print[connection.total_changes] 
01 SQL để thay đổi
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
1 của
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
4 thành giá trị mới của nó là
print[connection.total_changes] 
07 .

Output

[['Jamie', 'cuttlefish', 7]]
6 trong câu lệnh
print[connection.total_changes] 
01 đảm bảo ta chỉ thay đổi giá trị của
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
1 nếu một hàng có
print[connection.total_changes] 
11 .

Output

[['Jamie', 'cuttlefish', 7]]

Nếu ta chạy

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]
7 sau, ta có thể xác nhận bản cập nhật của ta đã được thực hiện chính xác:

Lưu ý hàng cho
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
4 bây giờ có giá trị là
print[connection.total_changes] 
07 cho cột
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
1 của nó.

Giả sử rằng con cá mập Sammy đã được thả vào tự nhiên và không còn được giữ trong bể cá nữa. Vì Sammy không còn sống ở thủy cung, nên việc loại bỏ hàng

cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
4 khỏi bàn
cursor = connection.cursor[] cursor.execute["CREATE TABLE fish [name TEXT, species TEXT, tank_number INTEGER]"] 
7 hợp lý.

Phát hành câu lệnh SQL

print[connection.total_changes] 
02 để xóa một hàng:

Ta đưa ra câu lệnh

print[connection.total_changes] 
02 SQL để xóa hàng cho
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
4 the
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
3 .

Output

[['Jamie', 'cuttlefish', 7]]
6 trong câu
print[connection.total_changes] 
02 đảm bảo ta chỉ xóa một hàng nếu hàng đó có
print[connection.total_changes] 
11 .

print[connection.total_changes] 
5

Nếu ta chạy

Output

[['Sammy', 'shark', 1], ['Jamie', 'cuttlefish', 7]]
7 sau, ta có thể xác nhận việc xóa của ta đã được thực hiện chính xác:

Nếu ta chạy mã này, ta sẽ thấy kết quả như sau:

print[connection.total_changes] 
6

Lưu ý hàng dành cho

cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
3
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
4 đã không còn, và chỉ còn lại
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
5
cursor.execute["INSERT INTO fish VALUES ['Sammy', 'shark', 1]"] cursor.execute["INSERT INTO fish VALUES ['Jamie', 'cuttlefish', 7]"] 
6 .

Bước 5 - Sử dụng
print[connection.total_changes] 
30 câu lệnh để tự động dọn dẹp

Trong hướng dẫn này, ta đã sử dụng hai đối tượng chính để tương tác với database SQLite

print[connection.total_changes] 
31 aqua.db
print[connection.total_changes] 
31 : đối tượng

Output

0
2 có tên là

Output

0
7 và đối tượng
rows = cursor.execute["SELECT name, species, tank_number FROM fish"].fetchall[] print[rows] 
0 có tên là
print[connection.total_changes] 
36 .

Tương tự như cách mà các file Python nên được đóng khi ta làm việc xong với chúng, các đối tượng

Output

0
2 và
rows = cursor.execute["SELECT name, species, tank_number FROM fish"].fetchall[] print[rows] 
0 cũng nên được đóng khi chúng không còn cần thiết nữa.

Ta có thể sử dụng câu lệnh

print[connection.total_changes] 
30 để giúp ta tự động đóng các đối tượng

Output

0
2 và
rows = cursor.execute["SELECT name, species, tank_number FROM fish"].fetchall[] print[rows] 
0 :

Tags:

Các tin liên quan

Cách thiết lập notebook Jupyter với Python 3 trên Ubuntu 20.04 và Kết nối qua Đường hầm SSH 2020-05-19 Cách cài đặt Phân phối Python Anaconda trên Ubuntu 20.04 [Khởi động nhanh] 2020-05-19 Cách cài đặt Phân phối Python Anaconda trên Ubuntu 20.04 2020-05-06 Cách cài đặt Python 3 và thiết lập môi trường lập trình trên server Ubuntu 20.04 2020-04-24 Cách cài đặt Python 3 và thiết lập môi trường lập trình trên server Ubuntu 18.04 2020-04-24 Cách cài đặt Python 3 và thiết lập môi trường lập trình trên Ubuntu 20.04 [Quickstart] 2020-04-24 Cách cài đặt Python 3 và thiết lập môi trường lập trình trên Ubuntu 18.04 [Quickstart] 2020-04-24 Cách cài đặt Python 3 và thiết lập môi trường lập trình trên CentOS 8 2020-04-10 Cách bắt đầu với Python trong Visual Studio Code 2020-04-09 Cách bắt đầu với Thư viện yêu cầu bằng Python 2020-01-29
2020-05-19
Cách cài đặt Phân phối Python Anaconda trên Ubuntu 20.04 [Khởi động nhanh]
2020-05-19
Cách cài đặt Phân phối Python Anaconda trên Ubuntu 20.04
2020-05-06
Cách cài đặt Python 3 và thiết lập môi trường lập trình trên server Ubuntu 20.04
2020-04-24
Cách cài đặt Python 3 và thiết lập môi trường lập trình trên server Ubuntu 18.04
2020-04-24
Cách cài đặt Python 3 và thiết lập môi trường lập trình trên Ubuntu 20.04 [Quickstart]
2020-04-24
Cách cài đặt Python 3 và thiết lập môi trường lập trình trên Ubuntu 18.04 [Quickstart]
2020-04-24
Cách cài đặt Python 3 và thiết lập môi trường lập trình trên CentOS 8
2020-04-10
Cách bắt đầu với Python trong Visual Studio Code
2020-04-09
Cách bắt đầu với Thư viện yêu cầu bằng Python
2020-01-29

Bài Viết Liên Quan

Chủ Đề