Đồng thời xem Cách liệt kê các bảng cơ sở dữ liệu SQLite3 trên dòng lệnh
Bạn có thể sử dụng đoạn mã này để liệt kê tất cả các bảng SQL trong SQLite 3 của mình. cơ sở dữ liệu x trong Python
def tables_in_sqlite_db[conn]: cursor = conn.execute["SELECT name FROM sqlite_master WHERE type='table';"] tables = [ v[0] for v in cursor.fetchall[] if v[0] != "sqlite_sequence" ] cursor.close[] return tables
ví dụ sử dụng
#!/usr/bin/env python3 import sqlite3 # Open database conn = sqlite3.connect['/usr/share/command-not-found/commands.db'] # List tables tables = tables_in_sqlite_db[conn] # Your code goes here! # Example: print[tables] # prints ['commands', 'packages']
Trước khi chạy truy vấn trên một bảng, bạn có thể kiểm tra xem bảng có trong cơ sở dữ liệu sqlite3 hay không
Để kiểm tra xem một bảng có tồn tại trong cơ sở dữ liệu Python sqlite3 hay không, bạn có thể truy vấn bảng
SELECT name FROM sqlite_master WHERE type='table' AND name='table_name';
9 để biết tên bảng khớp với tên bảng của bạnTruy vấn SQL
Truy vấn sql để kiểm tra xem bảng có tên đã cho có trong cơ sở dữ liệu hay không, được đưa ra dưới đây
SELECT name FROM sqlite_master WHERE type='table' AND name='table_name';
trong đó
import sqlite3
conn = sqlite3.connect['mysqlite.db']
c = conn.cursor[]
#get the count of tables with the name
c.execute[''' SELECT count[name] FROM sqlite_master WHERE type='table' AND name='students' ''']
#if the count is 1, then table exists
if c.fetchone[][0]==1 : {
print['Table exists.']
}
#commit the changes to db
conn.commit[]
#close the connection
conn.close[]
0 trong mệnh đề where nên được thay thế bằng tên bảng của bạnTừ kết quả của truy vấn này, bạn có thể kiểm tra xem có bất kỳ hàng nào có trong kết quả không. Nếu có một hàng trong kết quả, thì bảng tồn tại
ví dụ 1. Kiểm tra xem Bảng có tồn tại trong sqlite3 không
Trong bài viết tạo bảng trong python sqlite3 trước chúng ta đã tạo một bảng có tên là student. Bây giờ, trong ví dụ này, chúng tôi sẽ kiểm tra xem bảng có tồn tại theo chương trình không
Chương trình Python
import sqlite3
conn = sqlite3.connect['mysqlite.db']
c = conn.cursor[]
#get the count of tables with the name
c.execute[''' SELECT count[name] FROM sqlite_master WHERE type='table' AND name='students' ''']
#if the count is 1, then table exists
if c.fetchone[][0]==1 : {
print['Table exists.']
}
#commit the changes to db
conn.commit[]
#close the connection
conn.close[]
đầu ra
Table exists.
ví dụ 2. Kiểm tra xem Bảng có tồn tại trong Cơ sở dữ liệu sqlite3 [Kịch bản tiêu cực]
Trong ví dụ này, chúng tôi sẽ kiểm tra một kịch bản tiêu cực, trong đó bảng có tên
import sqlite3
conn = sqlite3.connect['mysqlite.db']
c = conn.cursor[]
#get the count of tables with the name
c.execute[''' SELECT count[name] FROM sqlite_master WHERE type='table' AND name='students' ''']
#if the count is 1, then table exists
if c.fetchone[][0]==1 : {
print['Table exists.']
}
#commit the changes to db
conn.commit[]
#close the connection
conn.close[]
1 không có trong cơ sở dữ liệu sqlite3 và chúng tôi sẽ xác minh nó theo chương trìnhChương trình Python
import sqlite3
conn = sqlite3.connect['mysqlite.db']
c = conn.cursor[]
#get the count of tables with the name
c.execute[''' SELECT count[name] FROM sqlite_master WHERE type='table' AND name='students1' ''']
#if the count is 1, then table exists
if c.fetchone[][0]==1 :
print['Table exists.']
else :
print['Table does not exist.']
#commit the changes to db
conn.commit[]
#close the connection
conn.close[]
đầu ra
Table does not exist.
Kiểm tra xem bảng có tồn tại trong bộ nhớ [RAM] không
Nếu bạn đang kiểm tra sự tồn tại của bảng trong bộ nhớ [RAM], thì trong truy vấn, hãy sử dụng sqlite_temp_master thay vì sqlite_master. Một truy vấn mẫu được đưa ra dưới đây
SELECT name FROM sqlite_temp_master WHERE type='table' AND name='table_name';
Bản tóm tắt
Trong hướng dẫn về Ví dụ Python này, chúng ta đã học cách kiểm tra xem một bảng đã cho có tồn tại trong cơ sở dữ liệu sqlite3 hay không
Bài học này trình bày cách thực thi SQLite SELECT Query từ Python để truy xuất các hàng từ bảng SQLite bằng cách sử dụng mô-đun tích hợp sẵn sqlite3
Mục tiêu của bài học này
- Tìm nạp tất cả các hàng bằng cách sử dụng
2import sqlite3 conn = sqlite3.connect['mysqlite.db'] c = conn.cursor[] #get the count of tables with the name c.execute[''' SELECT count[name] FROM sqlite_master WHERE type='table' AND name='students' '''] #if the count is 1, then table exists if c.fetchone[][0]==1 : { print['Table exists.'] } #commit the changes to db conn.commit[] #close the connection conn.close[]
- Sử dụng
Connected to SQLite Total rows are: 6 Printing each row Id: 1 Name: James Email: james@pynative.com JoiningDate: 2019-03-17 Salary: 8000.0 Id: 2 Name: Joe Email: joe@pynative.com JoiningDate: 2019-05-19 Salary: 9000.0 Id: 3 Name: Ben Email: ben@pynative.com JoiningDate: 2019-02-23 Salary: 9500.0 Id: 4 Name: Jos Email: jos@gmail.com JoiningDate: 2019-01-14 Salary: 9500.0 Id: 5 Name: Chris Email: chris@gmail.com JoiningDate: 2019-05-15 Salary: 7600.0 Id: 6 Name: Jonny Email: jonny@gmail.com JoiningDate: 2019-03-27 Salary: 8400.0 The SQLite connection is closed
0 để tìm nạp các hàng giới hạn và chỉ tìm nạp một hàng duy nhất bằng cách sử dụngConnected to SQLite Total rows are: 6 Printing each row Id: 1 Name: James Email: james@pynative.com JoiningDate: 2019-03-17 Salary: 8000.0 Id: 2 Name: Joe Email: joe@pynative.com JoiningDate: 2019-05-19 Salary: 9000.0 Id: 3 Name: Ben Email: ben@pynative.com JoiningDate: 2019-02-23 Salary: 9500.0 Id: 4 Name: Jos Email: jos@gmail.com JoiningDate: 2019-01-14 Salary: 9500.0 Id: 5 Name: Chris Email: chris@gmail.com JoiningDate: 2019-05-15 Salary: 7600.0 Id: 6 Name: Jonny Email: jonny@gmail.com JoiningDate: 2019-03-27 Salary: 8400.0 The SQLite connection is closed
1 - Sử dụng các biến Python trong truy vấn SQLite Select để chuyển các giá trị động
cũng đọc
- Giải bài tập Python SQLite
- Đọc Hướng dẫn Python SQLite [Hướng dẫn đầy đủ]
Mục lục
- Điều kiện tiên quyết
- Các bước để chọn hàng từ bảng SQLite
- Ví dụ để đọc tất cả các hàng từ bảng SQLite
- Sử dụng các biến Python làm tham số trong SQLite Select Query
- Chọn các hàng giới hạn từ bảng SQLite bằng con trỏ. tìm nạp []
- Chọn một hàng từ bảng SQLite
- Bước tiếp theo
Điều kiện tiên quyết
Trước khi thực hiện chương trình sau, vui lòng đảm bảo rằng bạn biết tên bảng SQLite và chi tiết cột của nó
Đối với bài học này, tôi đang sử dụng bảng ‘SqliteDb_developers’ có trong cơ sở dữ liệu SQLite của tôi
Nếu một bảng không có trong cơ sở dữ liệu SQLite của bạn, vui lòng tham khảo các bài viết sau. –
- Tạo bảng SQLite từ Python
- Chèn dữ liệu vào Bảng SQLite từ Python
Các bước để chọn hàng từ bảng SQLite
Cách chọn từ bảng SQLite bằng Python
- Kết nối với SQLite từ Python
Tham khảo Kết nối cơ sở dữ liệu Python SQLite để kết nối với cơ sở dữ liệu SQLite
- Xác định Truy vấn CHỌN SQLite
Tiếp theo, hãy chuẩn bị một truy vấn SQLite SELECT để tìm nạp các hàng từ một bảng. Bạn có thể chọn tất cả hoặc các hàng giới hạn dựa trên yêu cầu của bạn.
Ví dụ:Connected to SQLite Total rows are: 6 Printing each row Id: 1 Name: James Email: james@pynative.com JoiningDate: 2019-03-17 Salary: 8000.0 Id: 2 Name: Joe Email: joe@pynative.com JoiningDate: 2019-05-19 Salary: 9000.0 Id: 3 Name: Ben Email: ben@pynative.com JoiningDate: 2019-02-23 Salary: 9500.0 Id: 4 Name: Jos Email: jos@gmail.com JoiningDate: 2019-01-14 Salary: 9500.0 Id: 5 Name: Chris Email: chris@gmail.com JoiningDate: 2019-05-15 Salary: 7600.0 Id: 6 Name: Jonny Email: jonny@gmail.com JoiningDate: 2019-03-27 Salary: 8400.0 The SQLite connection is closed
2 - Nhận đối tượng con trỏ từ kết nối
Tiếp theo, sử dụng phương thức
Connected to SQLite Total rows are: 6 Printing each row Id: 1 Name: James Email: james@pynative.com JoiningDate: 2019-03-17 Salary: 8000.0 Id: 2 Name: Joe Email: joe@pynative.com JoiningDate: 2019-05-19 Salary: 9000.0 Id: 3 Name: Ben Email: ben@pynative.com JoiningDate: 2019-02-23 Salary: 9500.0 Id: 4 Name: Jos Email: jos@gmail.com JoiningDate: 2019-01-14 Salary: 9500.0 Id: 5 Name: Chris Email: chris@gmail.com JoiningDate: 2019-05-15 Salary: 7600.0 Id: 6 Name: Jonny Email: jonny@gmail.com JoiningDate: 2019-03-27 Salary: 8400.0 The SQLite connection is closed
3 để tạo đối tượng con trỏ. Phương thức này trả về một đối tượng con trỏ. Đối tượng Con trỏ được yêu cầu để thực hiện truy vấn - Thực hiện truy vấn CHỌN
Thực hiện truy vấn chọn bằng phương pháp
Connected to SQLite Total rows are: 6 Printing each row Id: 1 Name: James Email: james@pynative.com JoiningDate: 2019-03-17 Salary: 8000.0 Id: 2 Name: Joe Email: joe@pynative.com JoiningDate: 2019-05-19 Salary: 9000.0 Id: 3 Name: Ben Email: ben@pynative.com JoiningDate: 2019-02-23 Salary: 9500.0 Id: 4 Name: Jos Email: jos@gmail.com JoiningDate: 2019-01-14 Salary: 9500.0 Id: 5 Name: Chris Email: chris@gmail.com JoiningDate: 2019-05-15 Salary: 7600.0 Id: 6 Name: Jonny Email: jonny@gmail.com JoiningDate: 2019-03-27 Salary: 8400.0 The SQLite connection is closed
4 - Trích xuất tất cả các hàng từ một kết quả
Sau khi thực hiện thành công thao tác chọn, hãy sử dụng phương thức
Connected to SQLite Total rows are: 6 Printing each row Id: 1 Name: James Email: james@pynative.com JoiningDate: 2019-03-17 Salary: 8000.0 Id: 2 Name: Joe Email: joe@pynative.com JoiningDate: 2019-05-19 Salary: 9000.0 Id: 3 Name: Ben Email: ben@pynative.com JoiningDate: 2019-02-23 Salary: 9500.0 Id: 4 Name: Jos Email: jos@gmail.com JoiningDate: 2019-01-14 Salary: 9500.0 Id: 5 Name: Chris Email: chris@gmail.com JoiningDate: 2019-05-15 Salary: 7600.0 Id: 6 Name: Jonny Email: jonny@gmail.com JoiningDate: 2019-03-27 Salary: 8400.0 The SQLite connection is closed
5 của đối tượng con trỏ để lấy tất cả các hàng từ kết quả truy vấn. nó trả về một danh sách các hàng - Lặp lại từng hàng
Lặp lại danh sách hàng bằng vòng lặp for và truy cập từng hàng riêng lẻ [Truy cập dữ liệu cột của từng hàng bằng tên cột hoặc số chỉ mục. ]
- Đóng đối tượng con trỏ và đối tượng kết nối cơ sở dữ liệu
sử dụng phương pháp
Connected to SQLite Total rows are: 6 Printing each row Id: 1 Name: James Email: james@pynative.com JoiningDate: 2019-03-17 Salary: 8000.0 Id: 2 Name: Joe Email: joe@pynative.com JoiningDate: 2019-05-19 Salary: 9000.0 Id: 3 Name: Ben Email: ben@pynative.com JoiningDate: 2019-02-23 Salary: 9500.0 Id: 4 Name: Jos Email: jos@gmail.com JoiningDate: 2019-01-14 Salary: 9500.0 Id: 5 Name: Chris Email: chris@gmail.com JoiningDate: 2019-05-15 Salary: 7600.0 Id: 6 Name: Jonny Email: jonny@gmail.com JoiningDate: 2019-03-27 Salary: 8400.0 The SQLite connection is closed
6 vàConnected to SQLite Total rows are: 6 Printing each row Id: 1 Name: James Email: james@pynative.com JoiningDate: 2019-03-17 Salary: 8000.0 Id: 2 Name: Joe Email: joe@pynative.com JoiningDate: 2019-05-19 Salary: 9000.0 Id: 3 Name: Ben Email: ben@pynative.com JoiningDate: 2019-02-23 Salary: 9500.0 Id: 4 Name: Jos Email: jos@gmail.com JoiningDate: 2019-01-14 Salary: 9500.0 Id: 5 Name: Chris Email: chris@gmail.com JoiningDate: 2019-05-15 Salary: 7600.0 Id: 6 Name: Jonny Email: jonny@gmail.com JoiningDate: 2019-03-27 Salary: 8400.0 The SQLite connection is closed
7 để đóng kết nối SQLite sau khi công việc của bạn hoàn thành
Ví dụ để đọc tất cả các hàng từ bảng SQLite
#!/usr/bin/env python3 import sqlite3 # Open database conn = sqlite3.connect['/usr/share/command-not-found/commands.db'] # List tables tables = tables_in_sqlite_db[conn] # Your code goes here! # Example: print[tables] # prints ['commands', 'packages']6
đầu ra
Ghi chú. Tôi đang trực tiếp hiển thị từng hàng và các giá trị cột của nó. Nếu bạn muốn sử dụng các giá trị cột trong chương trình của mình, bạn có thể sao chép chúng vào biến python để sử dụng. Ví dụ,
Connected to SQLite Total rows are: 6 Printing each row Id: 1 Name: James Email: james@pynative.com JoiningDate: 2019-03-17 Salary: 8000.0 Id: 2 Name: Joe Email: joe@pynative.com JoiningDate: 2019-05-19 Salary: 9000.0 Id: 3 Name: Ben Email: ben@pynative.com JoiningDate: 2019-02-23 Salary: 9500.0 Id: 4 Name: Jos Email: jos@gmail.com JoiningDate: 2019-01-14 Salary: 9500.0 Id: 5 Name: Chris Email: chris@gmail.com JoiningDate: 2019-05-15 Salary: 7600.0 Id: 6 Name: Jonny Email: jonny@gmail.com JoiningDate: 2019-03-27 Salary: 8400.0 The SQLite connection is closed8
Sử dụng các biến Python làm tham số trong SQLite Select Query
Chúng ta thường cần chuyển một biến cho truy vấn chọn SQLite trong mệnh đề where để kiểm tra một số điều kiện
Giả sử ứng dụng muốn tìm nạp thông tin chi tiết về người bằng cách cung cấp bất kỳ id nào khi chạy. Để xử lý yêu cầu như vậy, chúng ta cần sử dụng truy vấn được tham số hóa
Truy vấn được tham số hóa là một truy vấn trong đó các phần giữ chỗ [_______89] được sử dụng cho các tham số và các giá trị tham số được cung cấp tại thời điểm thực hiện
SELECT name FROM sqlite_master WHERE type='table' AND name='table_name';
0Thí dụ
SELECT name FROM sqlite_master WHERE type='table' AND name='table_name';
1đầu ra
SELECT name FROM sqlite_master WHERE type='table' AND name='table_name';
2Chọn các hàng giới hạn từ bảng SQLite bằng con trỏ. tìm nạp []
Trong một số trường hợp, việc tìm nạp tất cả các hàng dữ liệu từ một bảng là một nhiệm vụ tốn thời gian nếu một bảng chứa hàng nghìn hàng
Để tìm nạp tất cả các hàng, chúng tôi phải sử dụng nhiều tài nguyên hơn, vì vậy chúng tôi cần nhiều không gian và thời gian xử lý hơn. Để nâng cao hiệu suất, hãy sử dụng phương thức
SELECT name FROM sqlite_master WHERE type='table' AND name='table_name';
00 của lớp con trỏ để tìm nạp ít hàng hơnSELECT name FROM sqlite_master WHERE type='table' AND name='table_name';
4đầu ra
SELECT name FROM sqlite_master WHERE type='table' AND name='table_name';
5Ghi chú. Trong chương trình trên, kích thước được chỉ định là 2 để tìm nạp hai bản ghi. Nếu bảng SQLite chứa các hàng nhỏ hơn kích thước đã chỉ định thì sẽ trả về ít hàng hơn
Chọn một hàng từ bảng SQLite
Khi bạn chỉ muốn đọc một hàng từ bảng SQLite, thì bạn nên sử dụng phương thức fetchone[] của lớp con trỏ. Bạn cũng có thể sử dụng phương pháp này trong các trường hợp khi bạn biết truy vấn sẽ chỉ trả về một hàng
Phương thức
Connected to SQLite Total rows are: 6 Printing each row Id: 1 Name: James Email: james@pynative.com JoiningDate: 2019-03-17 Salary: 8000.0 Id: 2 Name: Joe Email: joe@pynative.com JoiningDate: 2019-05-19 Salary: 9000.0 Id: 3 Name: Ben Email: ben@pynative.com JoiningDate: 2019-02-23 Salary: 9500.0 Id: 4 Name: Jos Email: jos@gmail.com JoiningDate: 2019-01-14 Salary: 9500.0 Id: 5 Name: Chris Email: chris@gmail.com JoiningDate: 2019-05-15 Salary: 7600.0 Id: 6 Name: Jonny Email: jonny@gmail.com JoiningDate: 2019-03-27 Salary: 8400.0 The SQLite connection is closed1 lấy hàng tiếp theo từ tập kết quả
SELECT name FROM sqlite_master WHERE type='table' AND name='table_name';
7đầu ra
SELECT name FROM sqlite_master WHERE type='table' AND name='table_name';
8Bước tiếp theo
Để thực hành những gì bạn đã học trong bài viết này, Vui lòng giải một project Bài tập Cơ sở dữ liệu Python để Thực hành và thành thạo các thao tác Cơ sở dữ liệu Python