Python SQLite - Hướng dẫn nhanh
SQLite3 có thể được tích hợp với Python bằng cách sử dụng mô-đun sqlite3, được viết bởi Gerhard Haring. Nó cung cấp giao diện SQL tuân thủ đặc tả DB-API 2.0 được mô tả bởi PEP 249. Bạn không cần cài đặt riêng mô-đun này vì nó được vận chuyển theo mặc định cùng với phiên bản Python 2.5.x trở đi.
Để sử dụng mô-đun sqlite3, trước tiên bạn phải tạo một đối tượng kết nối đại diện cho cơ sở dữ liệu và sau đó tùy ý bạn có thể tạo một đối tượng con trỏ, điều này sẽ giúp bạn thực thi tất cả các câu lệnh SQL.
API mô-đun Python SQLite3
Sau đây là các quy trình quan trọng của mô-đun sqlite3, có thể đáp ứng yêu cầu của bạn để làm việc với cơ sở dữ liệu SQLite từ chương trình Python của bạn. Nếu bạn đang tìm kiếm một ứng dụng phức tạp hơn, thì bạn có thể xem tài liệu chính thức của mô-đun Python sqlite3.
Sr.No. | API & Mô tả |
---|---|
1 | sqlite3.connect(database [,timeout ,other optional arguments]) API này mở một kết nối đến tệp cơ sở dữ liệu SQLite. Bạn có thể sử dụng ": memory:" để mở kết nối cơ sở dữ liệu với cơ sở dữ liệu nằm trong RAM thay vì trên đĩa. Nếu cơ sở dữ liệu được mở thành công, nó sẽ trả về một đối tượng kết nối. |
2 | connection.cursor([cursorClass]) Quy trình này tạo ra một con trỏ sẽ được sử dụng trong suốt quá trình lập trình cơ sở dữ liệu của bạn với Python. Phương thức này chấp nhận một tham số tùy chọn duy nhất là cursorClass. Nếu được cung cấp, đây phải là lớp con trỏ tùy chỉnh mở rộng sqlite3.Cursor. |
3 | cursor.execute(sql [, optional parameters]) Quy trình này thực thi một câu lệnh SQL. Câu lệnh SQL có thể được tham số hóa (tức là trình giữ chỗ thay vì các ký tự SQL). Mô-đun sqlite3 hỗ trợ hai loại trình giữ chỗ: dấu chấm hỏi và trình giữ chỗ được đặt tên (kiểu được đặt tên). For example - cursor.execute ("chèn vào giá trị người (?,?)", (Ai, tuổi)) |
4 | connection.execute(sql [, optional parameters]) Quy trình này là một lối tắt của phương thức thực thi ở trên được cung cấp bởi đối tượng con trỏ và nó tạo ra một đối tượng con trỏ trung gian bằng cách gọi phương thức con trỏ, sau đó gọi phương thức thực thi của con trỏ với các tham số đã cho. |
5 | cursor.executemany(sql, seq_of_parameters) Quy trình này thực thi một lệnh SQL chống lại tất cả các chuỗi tham số hoặc ánh xạ được tìm thấy trong chuỗi sql. |
6 | connection.executemany(sql[, parameters]) Quy trình này là một lối tắt tạo một đối tượng con trỏ trung gian bằng cách gọi phương thức con trỏ, sau đó gọi phương thức thực thi cursor.s với các tham số đã cho. |
7 | cursor.executescript(sql_script) Quy trình này thực thi nhiều câu lệnh SQL cùng một lúc được cung cấp dưới dạng tập lệnh. Nó đưa ra một câu lệnh COMMIT trước, sau đó thực thi tập lệnh SQL mà nó nhận được dưới dạng một tham số. Tất cả các câu lệnh SQL phải được phân tách bằng dấu chấm phẩy (;). |
số 8 | connection.executescript(sql_script) Quy trình này là một lối tắt tạo đối tượng con trỏ trung gian bằng cách gọi phương thức con trỏ, sau đó gọi phương thức thực thi của con trỏ với các tham số đã cho. |
9 | connection.total_changes() Quy trình này trả về tổng số hàng cơ sở dữ liệu đã được sửa đổi, chèn hoặc xóa kể từ khi kết nối cơ sở dữ liệu được mở. |
10 | connection.commit() Phương thức này cam kết giao dịch hiện tại. Nếu bạn không gọi phương thức này, bất kỳ điều gì bạn đã làm kể từ lần gọi cuối cùng tới commit () sẽ không hiển thị từ các kết nối cơ sở dữ liệu khác. |
11 | connection.rollback() Phương thức này sẽ quay trở lại bất kỳ thay đổi nào đối với cơ sở dữ liệu kể từ lần gọi cuối cùng tới commit (). |
12 | connection.close() Phương thức này đóng kết nối cơ sở dữ liệu. Lưu ý rằng điều này không tự động gọi commit (). Nếu bạn chỉ đóng kết nối cơ sở dữ liệu của mình mà không gọi commit () trước, các thay đổi của bạn sẽ bị mất! |
13 | cursor.fetchone() Phương thức này tìm nạp hàng tiếp theo của tập kết quả truy vấn, trả về một chuỗi duy nhất hoặc Không có khi không có thêm dữ liệu. |
14 | cursor.fetchmany([size = cursor.arraysize]) Quy trình này tìm nạp tập hợp các hàng tiếp theo của kết quả truy vấn, trả về một danh sách. Một danh sách trống được trả về khi không còn hàng nào nữa. Phương thức cố gắng tìm nạp nhiều hàng như được chỉ ra bởi tham số kích thước. |
15 | cursor.fetchall() Quy trình này tìm nạp tất cả (còn lại) các hàng của kết quả truy vấn, trả về một danh sách. Một danh sách trống được trả về khi không có hàng nào. |
Để thiết lập kết nối với dấu nhắc lệnh Mở SQLite, hãy duyệt qua vị trí nơi bạn đã cài đặt SQLite và chỉ cần thực hiện lệnh sqlite3 như hình dưới đây -
Thiết lập kết nối bằng Python
Bạn có thể giao tiếp với cơ sở dữ liệu SQLite2 bằng mô-đun python SQLite3. Để làm như vậy, trước hết bạn cần thiết lập kết nối (tạo đối tượng kết nối).
Để thiết lập kết nối với cơ sở dữ liệu SQLite3 bằng python, bạn cần -
Nhập mô-đun sqlite3 bằng cách sử dụng câu lệnh nhập.
Phương thức connect () chấp nhận tên của cơ sở dữ liệu bạn cần kết nối làm tham số và trả về đối tượng Kết nối.
Thí dụ
import sqlite3
conn = sqlite3.connect('example.db')
Đầu ra
print("Connection established ..........")
Sử dụng câu lệnh SQLite CREATE TABLE, bạn có thể tạo một bảng trong cơ sở dữ liệu.
Cú pháp
Sau đây là cú pháp để tạo một bảng trong cơ sở dữ liệu SQLite:
CREATE TABLE database_name.table_name(
column1 datatype PRIMARY KEY(one or more columns),
column2 datatype,
column3 datatype,
.....
columnN datatype
);
Thí dụ
Sau truy vấn / câu lệnh SQLite tạo một bảng có tên CRICKETERS trong cơ sở dữ liệu SQLite -
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
Hãy để chúng tôi tạo thêm một bảng OdiStats mô tả số liệu thống kê cricket trong một ngày của mỗi người chơi trong bảng CRICKETERS.
sqlite> CREATE TABLE ODIStats (
First_Name VARCHAR(255),
Matches INT,
Runs INT,
AVG FLOAT,
Centuries INT,
HalfCenturies INT
);
sqlite>
Bạn có thể lấy danh sách các bảng trong cơ sở dữ liệu trong cơ sở dữ liệu SQLite bằng cách sử dụng .tableschỉ huy. Sau khi tạo bảng, nếu bạn có thể xác minh danh sách các bảng, bạn có thể quan sát bảng mới được tạo trong đó là:
sqlite> . tables
CRICKETERS ODIStats
sqlite>
Tạo bảng bằng Python
Đối tượng Con trỏ chứa tất cả các phương thức để thực thi các lệnh và tìm nạp dữ liệu, v.v ... Phương thức con trỏ của lớp kết nối trả về một đối tượng con trỏ.
Do đó, để tạo một bảng trong cơ sở dữ liệu SQLite bằng python -
Thiết lập kết nối với cơ sở dữ liệu bằng phương thức connect ().
Tạo đối tượng con trỏ bằng cách gọi phương thức con trỏ () trên đối tượng kết nối đã tạo ở trên.
Bây giờ thực thi câu lệnh CREATE TABLE bằng phương thức execute () của lớp Con trỏ.
Thí dụ
Chương trình Python sau tạo một bảng có tên Nhân viên trong SQLite3:
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
#Creating 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)
print("Table created successfully........")
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
Đầu ra
Table created successfully........
Bạn có thể thêm hàng mới vào bảng SQLite hiện có bằng cách sử dụng câu lệnh INSERT INTO. Trong trường này, bạn cần chỉ định tên bảng, tên cột và giá trị (theo thứ tự như tên cột).
Cú pháp
Sau đây là cú pháp được khuyến nghị của câu lệnh INSERT:
INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
VALUES (value1, value2, value3,...valueN);
Trong đó, column1, column2, column3, .. là tên các cột của bảng và value1, value2, value3, ... là các giá trị bạn cần chèn vào bảng.
Thí dụ
Giả sử chúng ta đã tạo một bảng với tên CRICKETERS bằng cách sử dụng câu lệnh CREATE TABLE như hình dưới đây -
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
Sau câu lệnh PostgreSQL chèn một hàng trong bảng đã tạo ở trên.
sqlite> insert into CRICKETERS (First_Name, Last_Name, Age, Place_Of_Birth, Country)
values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite>
Trong khi chèn bản ghi bằng câu lệnh INSERT INTO , nếu bạn bỏ qua bất kỳ tên cột nào, bản ghi này sẽ được chèn để lại khoảng trống tại các cột mà bạn đã bỏ qua.
sqlite> insert into CRICKETERS (First_Name, Last_Name, Country)
values ('Jonathan', 'Trott', 'SouthAfrica');
sqlite>
Bạn cũng có thể chèn các bản ghi vào bảng mà không cần chỉ định tên cột, nếu thứ tự của các giá trị bạn chuyển giống với tên cột tương ứng của chúng trong bảng.
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>
Sau khi chèn các bản ghi vào một bảng, bạn có thể xác minh nội dung của nó bằng cách sử dụng câu lệnh SELECT như hình dưới đây:
sqlite> select * from cricketers;
Shikhar |Dhawan | 33 | Delhi | India
Jonathan |Trott | | | SouthAfrica
Kumara |Sangakkara | 41 | Matale| Srilanka
Virat |Kohli | 30 | Delhi | India
Rohit |Sharma | 32 | Nagpur| India
sqlite>
Chèn dữ liệu bằng Python
Để thêm bản ghi vào bảng hiện có trong cơ sở dữ liệu SQLite -
Nhập gói sqlite3.
Tạo một đối tượng kết nối bằng phương thức connect () bằng cách chuyển tên của cơ sở dữ liệu làm tham số cho nó.
Các cursor()phương thức trả về một đối tượng con trỏ sử dụng mà bạn có thể giao tiếp với SQLite3. Tạo một đối tượng con trỏ bằng cách gọi đối tượng con trỏ () trên đối tượng Kết nối (đã tạo ở trên).
Sau đó, gọi phương thức execute () trên đối tượng con trỏ, bằng cách chuyển câu lệnh INSERT làm tham số cho nó.
Thí dụ
Ví dụ python sau sẽ chèn các bản ghi vào một bảng có tên EMPLOYEE -
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Preparing SQL queries to INSERT a record into the database.
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Ramya', 'Rama Priya', 27, 'F', 9000)'''
)
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Vinay', 'Battacharya', 20, 'M', 6000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Sharukh', 'Sheik', 25, 'M', 8300)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Sarmista', 'Sharma', 26, 'F', 10000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Tripthi', 'Mishra', 24, 'F', 6000)''')
# Commit your changes in the database
conn.commit()
print("Records inserted........")
# Closing the connection
conn.close()
Đầu ra
Records inserted........
Bạn có thể truy xuất dữ liệu từ bảng SQLite bằng cách sử dụng truy vấn SELECT. Truy vấn / câu lệnh này trả về nội dung của quan hệ được chỉ định (bảng) ở dạng bảng và nó được gọi là tập kết quả.
Cú pháp
Sau đây là cú pháp của câu lệnh SELECT trong SQLite:
SELECT column1, column2, columnN FROM table_name;
Thí dụ
Giả sử chúng ta đã tạo một bảng có tên CRICKETERS bằng truy vấn sau:
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
Và nếu chúng ta đã chèn 5 bản ghi vào nó bằng cách sử dụng câu lệnh INSERT như -
sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>
Sau khi truy vấn SELECT truy xuất giá trị của các cột FIRST_NAME, LAST_NAME và COUNTRY từ bảng CRICKETERS.
sqlite> SELECT FIRST_NAME, LAST_NAME, COUNTRY FROM CRICKETERS;
Shikhar |Dhawan |India
Jonathan |Trott |SouthAfrica
Kumara |Sangakkara |Srilanka
Virat |Kohli |India
Rohit |Sharma |India
sqlite>
Như bạn quan sát, câu lệnh SELECT của cơ sở dữ liệu SQLite chỉ trả về các bản ghi của các bảng được chỉ định. Để có được đầu ra được định dạng, bạn cần đặtheader, và mode bằng cách sử dụng các lệnh tương ứng trước câu lệnh SELECT như hình dưới đây -
sqlite> .header on
sqlite> .mode column
sqlite> SELECT FIRST_NAME, LAST_NAME, COUNTRY FROM CRICKETERS;
First_Name Last_Name Country
---------- ---------- ----------
Shikhar Dhawan India
Jonathan Trott SouthAfric
Kumara Sangakkara rilanka
Virat Kohli India
Rohit Sharma India
Nếu bạn muốn truy xuất tất cả các cột của mỗi bản ghi, bạn cần thay thế tên của các cột bằng "*" như hình dưới đây -
sqlite> .header on
sqlite> .mode column
sqlite> SELECT * FROM CRICKETERS;
First_Name Last_Name Age Place_Of_Birth Country
---------- ---------- ------- -------------- ----------
Shikhar Dhawan 33 Delhi India
Jonathan Trott 38 CapeTown SouthAfric
Kumara Sangakkara 41 Matale Srilanka
Virat Kohli 30 Delhi India
Rohit Sharma 32 Nagpur India
sqlite>
Trong SQLite theo mặc định, chiều rộng của các cột là 10 giá trị ngoài chiều rộng này được cắt nhỏ (quan sát cột quốc gia của hàng thứ 2 trong bảng trên). Bạn có thể đặt chiều rộng của mỗi cột thành giá trị bắt buộc bằng cách sử dụng.width trước khi truy xuất nội dung của bảng như hình dưới đây -
sqlite> .width 10, 10, 4, 10, 13
sqlite> SELECT * FROM CRICKETERS;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- --------
Shikhar Dhawan 33 Delhi India
Jonathan Trott 38 CapeTown SouthAfrica
Kumara Sangakkara 41 Matale Srilanka
Virat Kohli 30 Delhi India
Rohit Sharma 32 Nagpur India
sqlite>
Truy xuất dữ liệu bằng Python
ĐỌC Hoạt động trên bất kỳ cơ sở dữ liệu nào có nghĩa là lấy một số thông tin hữu ích từ cơ sở dữ liệu. Bạn có thể tìm nạp dữ liệu từ MYSQL bằng phương thức fetch () được cung cấp bởi mô-đun python sqlite.
Lớp sqlite3.Cursor cung cấp ba phương thức cụ thể là fetchall (), fetchmany () và, fetchone () trong đó,
Phương thức fetchall () truy xuất tất cả các hàng trong tập kết quả của một truy vấn và trả về chúng dưới dạng danh sách các bộ giá trị. (Nếu chúng ta thực hiện điều này sau khi truy xuất một vài hàng, nó sẽ trả về những hàng còn lại).
Phương thức fetchone () tìm nạp hàng tiếp theo trong kết quả của một truy vấn và trả về nó dưới dạng một bộ giá trị.
Phương thức fetchmany () tương tự như fetchone () nhưng, nó truy xuất tập hợp các hàng tiếp theo trong tập kết quả của một truy vấn, thay vì một hàng.
Note - Tập kết quả là một đối tượng được trả về khi một đối tượng con trỏ được sử dụng để truy vấn một bảng.
Thí dụ
Ví dụ sau tìm nạp tất cả các hàng của bảng EMPLOYEE bằng cách sử dụng truy vấn SELECT và từ tập kết quả thu được ban đầu, chúng tôi đang truy xuất hàng đầu tiên bằng phương thức fetchone () và sau đó tìm nạp các hàng còn lại bằng phương thức fetchall ().
Chương trình Python sau đây cho thấy cách tìm nạp và hiển thị các bản ghi từ bảng COMPANY được tạo trong ví dụ trên.
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Retrieving data
cursor.execute('''SELECT * from EMPLOYEE''')
#Fetching 1st row from the table
result = cursor.fetchone();
print(result)
#Fetching 1st row from the table
result = cursor.fetchall();
print(result)
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
Đầu ra
('Ramya', 'Rama priya', 27, 'F', 9000.0)
[
('Vinay', 'Battacharya', 20, 'M', 6000.0),
('Sharukh', 'Sheik', 25, 'M', 8300.0),
('Sarmista', 'Sharma', 26, 'F', 10000.0),
('Tripthi', 'Mishra', 24, 'F', 6000.0)
]
Nếu bạn muốn tìm nạp, xóa hoặc cập nhật các hàng cụ thể của bảng trong SQLite, bạn cần sử dụng mệnh đề where để chỉ định điều kiện để lọc các hàng của bảng cho thao tác.
Ví dụ, nếu bạn có một câu lệnh SELECT với mệnh đề where, chỉ các hàng thỏa mãn điều kiện đã chỉ định mới được truy xuất.
Cú pháp
Sau đây là cú pháp của mệnh đề WHERE trong SQLite:
SELECT column1, column2, columnN
FROM table_name
WHERE [search_condition]
Bạn có thể chỉ định điều kiện tìm kiếm bằng cách sử dụng các toán tử so sánh hoặc lôgic. like>, <, =, LIKE, NOT, vv Các ví dụ sau đây sẽ làm rõ khái niệm này.
Thí dụ
Giả sử chúng ta đã tạo một bảng có tên CRICKETERS bằng truy vấn sau:
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
Và nếu chúng ta đã chèn 5 bản ghi vào nó bằng cách sử dụng câu lệnh INSERT như -
sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>
Câu lệnh SELECT sau truy xuất các bản ghi có tuổi lớn hơn 35 -
sqlite> SELECT * FROM CRICKETERS WHERE AGE > 35;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- -----------
Jonathan Trott 38 CapeTown SouthAfrica
Kumara Sangakkara 41 Matale Srilanka
sqlite>
Mệnh đề Where sử dụng Python
Đối tượng / lớp con trỏ chứa tất cả các phương thức để thực thi truy vấn và tìm nạp dữ liệu, v.v ... Phương thức con trỏ của lớp kết nối trả về một đối tượng con trỏ.
Do đó, để tạo một bảng trong cơ sở dữ liệu SQLite bằng python -
Thiết lập kết nối với cơ sở dữ liệu bằng phương thức connect ().
Tạo đối tượng con trỏ bằng cách gọi phương thức con trỏ () trên đối tượng kết nối đã tạo ở trên.
Bây giờ thực thi câu lệnh CREATE TABLE bằng phương thức execute () của lớp Con trỏ.
Thí dụ
Ví dụ sau tạo một bảng có tên Nhân viên và điền vào bảng đó. Sau đó, sử dụng mệnh đề where, nó truy xuất các bản ghi có giá trị tuổi nhỏ hơn 23.
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
sql = '''CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT
)'''
cursor.execute(sql)
#Populating the table
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Ramya', 'Rama priya', 27, 'F', 9000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Vinay', 'Battacharya', 20, 'M', 6000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Sharukh', 'Sheik', 25, 'M', 8300)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Sarmista', 'Sharma', 26, 'F', 10000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Tripthi', 'Mishra', 24, 'F', 6000)''')
#Retrieving specific records using the where clause
cursor.execute("SELECT * from EMPLOYEE WHERE AGE <23")
print(cursor.fetchall())
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
Đầu ra
[('Vinay', 'Battacharya', 20, 'M', 6000.0)]
Trong khi tìm nạp dữ liệu bằng cách sử dụng truy vấn SELECT, bạn sẽ nhận được các bản ghi theo cùng thứ tự mà bạn đã chèn chúng.
Bạn có thể sắp xếp các kết quả theo thứ tự mong muốn (tăng dần hoặc giảm dần) bằng cách sử dụng Order Bymệnh đề. Theo mặc định, mệnh đề này sắp xếp các kết quả theo thứ tự tăng dần, nếu bạn cần sắp xếp chúng theo thứ tự giảm dần, bạn cần sử dụng “DESC” một cách rõ ràng.
Cú pháp
Sau đây là cú pháp của mệnh đề ORDER BY trong SQLite.
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
Thí dụ
Giả sử chúng ta đã tạo một bảng có tên CRICKETERS bằng truy vấn sau:
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
Và nếu chúng ta đã chèn 5 bản ghi vào nó bằng cách sử dụng câu lệnh INSERT như -
sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>
Sau câu lệnh SELECT truy xuất các hàng của bảng CRICKETERS theo thứ tự tăng dần của độ tuổi của chúng -
sqlite> SELECT * FROM CRICKETERS ORDER BY AGE;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- -----------
Virat Kohli 30 Delhi India
Rohit Sharma 32 Nagpur India
Shikhar Dhawan 33 Delhi India
Jonathan Trott 38 CapeTown SouthAfrica
Kumara Sangakkara 41 Matale Srilanka
sqlite>
Bạn có thể sử dụng nhiều cột để sắp xếp các bản ghi của một bảng. Các câu lệnh SELECT sau đây sắp xếp các bản ghi của bảng CRICKETERS dựa trên các cột AGE và FIRST_NAME .
sqlite> SELECT * FROM CRICKETERS ORDER BY AGE, FIRST_NAME;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- -------------
Virat Kohli 30 Delhi India
Rohit Sharma 32 Nagpur India
Shikhar Dhawan 33 Delhi India
Jonathan Trott 38 CapeTown SouthAfrica
Kumara Sangakkara 41 Matale Srilanka
sqlite>
Theo mặc định, ORDER BY mệnh đề sắp xếp các bản ghi của một bảng theo thứ tự tăng dần, bạn có thể sắp xếp các kết quả theo thứ tự giảm dần bằng cách sử dụng DESC như sau:
sqlite> SELECT * FROM CRICKETERS ORDER BY AGE DESC;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- -------------
Kumara Sangakkara 41 Matale Srilanka
Jonathan Trott 38 CapeTown SouthAfrica
Shikhar Dhawan 33 Delhi India
Rohit Sharma 32 Nagpur India
Virat Kohli 30 Delhi India
sqlite>
Mệnh đề ORDER BY sử dụng Python
Để truy xuất nội dung của một bảng theo thứ tự cụ thể, hãy gọi phương thức execute () trên đối tượng con trỏ và chuyển câu lệnh SELECT cùng với mệnh đề ORDER BY, làm tham số cho nó.
Thí dụ
Trong ví dụ sau, chúng ta đang tạo một bảng với tên và Nhân viên, điền nó vào và lấy lại các bản ghi của nó theo thứ tự (tăng dần) tuổi của chúng, sử dụng mệnh đề ORDER BY.
import psycopg2
#establishing the connection
conn = psycopg2.connect(
database="mydb", user='postgres', password='password', host='127.0.0.1', port= '5432'
)
#Setting auto commit false
conn.autocommit = True
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
#Creating a table
sql = '''CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT, SEX CHAR(1),
INCOME INT,
CONTACT INT
)'''
cursor.execute(sql)
#Populating the table
#Populating the table
cursor.execute(
'''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Ramya', 'Rama priya', 27, 'F', 9000),
('Vinay', 'Battacharya', 20, 'M', 6000),
('Sharukh', 'Sheik', 25, 'M', 8300),
('Sarmista', 'Sharma', 26, 'F', 10000),
('Tripthi', 'Mishra', 24, 'F', 6000)''')
conn.commit()
#Retrieving specific records using the ORDER BY clause
cursor.execute("SELECT * from EMPLOYEE ORDER BY AGE")
print(cursor.fetchall())
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
Đầu ra
[
('Vinay', 'Battacharya', 20, 'M', 6000, None),
('Tripthi', 'Mishra', 24, 'F', 6000, None),
('Sharukh', 'Sheik', 25, 'M', 8300, None),
('Sarmista', 'Sharma', 26, 'F', 10000, None),
('Ramya', 'Rama priya', 27, 'F', 9000, None)
]
CẬP NHẬT Hoạt động trên bất kỳ cơ sở dữ liệu nào ngụ ý sửa đổi các giá trị của một hoặc nhiều bản ghi của bảng, các bản ghi này đã có sẵn trong cơ sở dữ liệu. Bạn có thể cập nhật giá trị của các bản ghi hiện có trong SQLite bằng cách sử dụng câu lệnh UPDATE.
Để cập nhật các hàng cụ thể, bạn cần sử dụng mệnh đề WHERE cùng với nó.
Cú pháp
Sau đây là cú pháp của câu lệnh UPDATE trong SQLite:
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
Thí dụ
Giả sử chúng ta đã tạo một bảng có tên CRICKETERS bằng truy vấn sau:
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
Và nếu chúng ta đã chèn 5 bản ghi vào nó bằng cách sử dụng câu lệnh INSERT như -
sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>
Câu lệnh sau sửa đổi tuổi của người chơi cricket, có tên đầu tiên là Shikhar -
sqlite> UPDATE CRICKETERS SET AGE = 45 WHERE FIRST_NAME = 'Shikhar' ;
sqlite>
Nếu bạn truy xuất bản ghi có FIRST_NAME là Shikhar, bạn thấy rằng giá trị tuổi đã được thay đổi thành 45 -
sqlite> SELECT * FROM CRICKETERS WHERE FIRST_NAME = 'Shikhar';
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- --------
Shikhar Dhawan 45 Delhi India
sqlite>
Nếu bạn chưa sử dụng, các giá trị mệnh đề WHERE của tất cả các bản ghi sẽ được cập nhật. Sau câu lệnh UPDATE tăng tuổi của tất cả các bản ghi trong bảng CRICKETERS lên 1 -
sqlite> UPDATE CRICKETERS SET AGE = AGE+1;
sqlite>
Nếu bạn truy xuất nội dung của bảng bằng lệnh SELECT, bạn có thể thấy các giá trị được cập nhật dưới dạng:
sqlite> SELECT * FROM CRICKETERS;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- -------------
Shikhar Dhawan 46 Delhi India
Jonathan Trott 39 CapeTown SouthAfrica
Kumara Sangakkara 42 Matale Srilanka
Virat Kohli 31 Delhi India
Rohit Sharma 33 Nagpur India
sqlite>
Cập nhật các bản ghi hiện có bằng Python
Để thêm bản ghi vào bảng hiện có trong cơ sở dữ liệu SQLite -
Nhập gói sqlite3.
Tạo một đối tượng kết nối bằng phương thức connect () bằng cách chuyển tên của cơ sở dữ liệu làm tham số cho nó.
Các cursor()phương thức trả về một đối tượng con trỏ sử dụng mà bạn có thể giao tiếp với SQLite3. Tạo một đối tượng con trỏ bằng cách gọi đối tượng con trỏ () trên đối tượng Kết nối (đã tạo ở trên).
Sau đó, gọi phương thức execute () trên đối tượng con trỏ, bằng cách chuyển một câu lệnh UPDATE làm tham số cho nó.
Thí dụ
Sau ví dụ Python, tạo một bảng với tên EMPLOYEE, chèn 5 bản ghi vào đó và tăng tuổi của tất cả nhân viên nam lên 1 -
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
#Creating 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)
#Inserting data
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Ramya', 'Rama priya', 27, 'F', 9000),
('Vinay', 'Battacharya', 20, 'M', 6000),
('Sharukh', 'Sheik', 25, 'M', 8300),
('Sarmista', 'Sharma', 26, 'F', 10000),
('Tripthi', 'Mishra', 24, 'F', 6000)''')
conn.commit()
#Fetching all the rows before the update
print("Contents of the Employee table: ")
cursor.execute('''SELECT * from EMPLOYEE''')
print(cursor.fetchall())
#Updating the records
sql = '''UPDATE EMPLOYEE SET AGE=AGE+1 WHERE SEX = 'M' '''
cursor.execute(sql)
print("Table updated...... ")
#Fetching all the rows after the update
print("Contents of the Employee table after the update operation: ")
cursor.execute('''SELECT * from EMPLOYEE''')
print(cursor.fetchall())
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
Đầu ra
Contents of the Employee table:
[
('Ramya', 'Rama priya', 27, 'F', 9000.0),
('Vinay', 'Battacharya', 20, 'M', 6000.0),
('Sharukh', 'Sheik', 25, 'M', 8300.0),
('Sarmista', 'Sharma', 26, 'F', 10000.0),
('Tripthi', 'Mishra', 24, 'F', 6000.0)
]
Table updated......
Contents of the Employee table after the update operation:
[
('Ramya', 'Rama priya', 27, 'F', 9000.0),
('Vinay', 'Battacharya', 21, 'M', 6000.0),
('Sharukh', 'Sheik', 26, 'M', 8300.0),
('Sarmista', 'Sharma', 26, 'F', 10000.0),
('Tripthi', 'Mishra', 24, 'F', 6000.0)
]
Để xóa bản ghi khỏi bảng SQLite, bạn cần sử dụng câu lệnh DELETE FROM. Để xóa các bản ghi cụ thể, bạn cần sử dụng mệnh đề WHERE cùng với nó.
Cú pháp
Sau đây là cú pháp của truy vấn DELETE trong SQLite:
DELETE FROM table_name [WHERE Clause]
Thí dụ
Giả sử chúng ta đã tạo một bảng có tên CRICKETERS bằng truy vấn sau:
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
Và nếu chúng ta đã chèn 5 bản ghi vào nó bằng cách sử dụng câu lệnh INSERT như -
sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>
Tuyên bố sau đây xóa kỷ lục của vận động viên cricket có họ là 'Sangakkara'.
sqlite> DELETE FROM CRICKETERS WHERE LAST_NAME = 'Sangakkara';
sqlite>
Nếu bạn truy xuất nội dung của bảng bằng câu lệnh SELECT, bạn chỉ có thể thấy 4 bản ghi vì chúng tôi đã xóa một bản ghi.
sqlite> SELECT * FROM CRICKETERS;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- --------
Shikhar Dhawan 46 Delhi India
Jonathan Trott 39 CapeTown SouthAfrica
Virat Kohli 31 Delhi India
Rohit Sharma 33 Nagpur India
sqlite>
Nếu bạn thực hiện câu lệnh DELETE FROM mà không có mệnh đề WHERE, tất cả các bản ghi từ bảng được chỉ định sẽ bị xóa.
sqlite> DELETE FROM CRICKETERS;
sqlite>
Vì bạn đã xóa tất cả các bản ghi, nếu bạn cố gắng truy xuất nội dung của bảng CRICKETERS, bằng cách sử dụng câu lệnh SELECT, bạn sẽ nhận được một tập hợp kết quả trống như hình dưới đây:
sqlite> SELECT * FROM CRICKETERS;
sqlite>
Xóa dữ liệu bằng Python
Để thêm bản ghi vào bảng hiện có trong cơ sở dữ liệu SQLite -
Nhập gói sqlite3.
Tạo một đối tượng kết nối bằng phương thức connect () bằng cách chuyển tên của cơ sở dữ liệu làm tham số cho nó.
Các cursor()phương thức trả về một đối tượng con trỏ sử dụng mà bạn có thể giao tiếp với SQLite3. Tạo một đối tượng con trỏ bằng cách gọi đối tượng con trỏ () trên đối tượng Kết nối (đã tạo ở trên).
Sau đó, gọi phương thức execute () trên đối tượng con trỏ, bằng cách truyền một DELETE câu lệnh như một tham số cho nó.
Thí dụ
Ví dụ python sau sẽ xóa các bản ghi khỏi bảng EMPLOYEE có giá trị tuổi lớn hơn 25.
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Retrieving contents of the table
print("Contents of the table: ")
cursor.execute('''SELECT * from EMPLOYEE''')
print(cursor.fetchall())
#Deleting records
cursor.execute('''DELETE FROM EMPLOYEE WHERE AGE > 25''')
#Retrieving data after delete
print("Contents of the table after delete operation ")
cursor.execute("SELECT * from EMPLOYEE")
print(cursor.fetchall())
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
Đầu ra
Contents of the table:
[
('Ramya', 'Rama priya', 27, 'F', 9000.0),
('Vinay', 'Battacharya', 21, 'M', 6000.0),
('Sharukh', 'Sheik', 26, 'M', 8300.0),
('Sarmista', 'Sharma', 26, 'F', 10000.0),
('Tripthi', 'Mishra', 24, 'F', 6000.0)
]
Contents of the table after delete operation
[
('Vinay', 'Battacharya', 21, 'M', 6000.0),
('Tripthi', 'Mishra', 24, 'F', 6000.0)
]
Bạn có thể xóa toàn bộ bảng bằng câu lệnh DROP TABLE. Bạn chỉ cần xác định tên bảng mà bạn cần xóa.
Cú pháp
Sau đây là cú pháp của câu lệnh DROP TABLE trong PostgreSQL:
DROP TABLE table_name;
Thí dụ
Giả sử chúng ta đã tạo hai bảng có tên CRICKETERS và EMPLOYEES bằng cách sử dụng các truy vấn sau:
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255), Last_Name VARCHAR(255), Age int,
Place_Of_Birth VARCHAR(255), Country VARCHAR(255)
);
sqlite> CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT,
SEX CHAR(1), INCOME FLOAT
);
sqlite>
Bây giờ nếu bạn xác minh danh sách các bảng bằng cách sử dụng .tables , bạn có thể thấy các bảng đã tạo ở trên trong đó (danh sách) dưới dạng:
sqlite> .tables
CRICKETERS EMPLOYEE
sqlite>
Câu lệnh sau xóa bảng có tên Nhân viên khỏi cơ sở dữ liệu -
sqlite> DROP table employee;
sqlite>
Vì bạn đã xóa bảng Nhân viên, nếu bạn truy xuất lại danh sách các bảng, bạn chỉ có thể quan sát một bảng trong đó.
sqlite> .tables
CRICKETERS
sqlite>
Nếu bạn cố gắng xóa bảng Nhân viên một lần nữa, vì bạn đã xóa nó, bạn sẽ gặp lỗi nói "không có bảng như vậy" như hình dưới đây -
sqlite> DROP table employee;
Error: no such table: employee
sqlite>
Để giải quyết vấn đề này, bạn có thể sử dụng mệnh đề IF EXISTS cùng với câu lệnh DELETE. Thao tác này sẽ xóa bảng nếu nó tồn tại, nếu không thì bỏ qua thao tác DELETE.
sqlite> DROP table IF EXISTS employee;
sqlite>
Bỏ bảng bằng Python
Bạn có thể xóa một bảng bất cứ khi nào bạn cần, bằng cách sử dụng câu lệnh DROP của MYSQL, nhưng bạn cần phải rất cẩn thận khi xóa bất kỳ bảng nào hiện có vì dữ liệu bị mất sẽ không được phục hồi sau khi xóa bảng.
Thí dụ
Để thả một bảng từ cơ sở dữ liệu SQLite3 bằng cách sử dụng python, hãy gọi execute() trên đối tượng con trỏ và chuyển câu lệnh drop làm tham số cho nó.
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Doping EMPLOYEE table if already exists
cursor.execute("DROP TABLE emp")
print("Table dropped... ")
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
Đầu ra
Table dropped...
Trong khi tìm nạp các bản ghi nếu bạn muốn giới hạn chúng bằng một số cụ thể, bạn có thể làm như vậy bằng cách sử dụng mệnh đề LIMIT của SQLite.
Cú pháp
Sau đây là cú pháp của mệnh đề LIMIT trong SQLite:
SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows]
Thí dụ
Giả sử chúng ta đã tạo một bảng có tên CRICKETERS bằng truy vấn sau:
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
Và nếu chúng ta đã chèn 5 bản ghi vào nó bằng cách sử dụng câu lệnh INSERT như -
sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>
Câu lệnh sau truy xuất 3 bản ghi đầu tiên của bảng Cricketers bằng cách sử dụng mệnh đề LIMIT -
sqlite> SELECT * FROM CRICKETERS LIMIT 3;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- -------------
Shikhar Dhawan 33 Delhi India
Jonathan Trott 38 CapeTown SouthAfrica
Kumara Sangakkara 41 Matale Srilanka
sqlite>
Nếu bạn cần giới hạn các bản ghi bắt đầu từ bản ghi thứ n (không phải thứ 1 ), bạn có thể làm như vậy bằng cách sử dụng OFFSET cùng với LIMIT.
sqlite> SELECT * FROM CRICKETERS LIMIT 3 OFFSET 2;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- --------
Kumara Sangakkara 41 Matale Srilanka
Virat Kohli 30 Delhi India
Rohit Sharma 32 Nagpur India
sqlite>
Mệnh đề LIMIT sử dụng Python
Nếu bạn gọi phương thức execute () trên đối tượng con trỏ bằng cách chuyển truy vấn SELECT cùng với mệnh đề LIMIT, bạn có thể truy xuất số lượng bản ghi cần thiết.
Thí dụ
Ví dụ python sau truy xuất hai bản ghi đầu tiên của bảng EMPLOYEE bằng cách sử dụng mệnh đề LIMIT.
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Retrieving single row
sql = '''SELECT * from EMPLOYEE LIMIT 3'''
#Executing the query
cursor.execute(sql)
#Fetching the data
result = cursor.fetchall();
print(result)
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
Đầu ra
[
('Ramya', 'Rama priya', 27, 'F', 9000.0),
('Vinay', 'Battacharya', 20, 'M', 6000.0),
('Sharukh', 'Sheik', 25, 'M', 8300.0)
]
Khi bạn đã chia dữ liệu trong hai bảng, bạn có thể tìm nạp các bản ghi kết hợp từ hai bảng này bằng cách sử dụng Kết hợp.
Thí dụ
Giả sử chúng ta đã tạo một bảng có tên CRICKETERS bằng truy vấn sau:
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
Hãy để chúng tôi tạo thêm một bảng OdiStats mô tả số liệu thống kê cricket trong một ngày của mỗi người chơi trong bảng CRICKETERS.
sqlite> CREATE TABLE ODIStats (
First_Name VARCHAR(255),
Matches INT,
Runs INT,
AVG FLOAT,
Centuries INT,
HalfCenturies INT
);
sqlite>
Câu lệnh sau truy xuất dữ liệu kết hợp các giá trị trong hai bảng này:
sqlite> SELECT
Cricketers.First_Name, Cricketers.Last_Name, Cricketers.Country,
OdiStats.matches, OdiStats.runs, OdiStats.centuries, OdiStats.halfcenturies
from Cricketers INNER JOIN OdiStats ON Cricketers.First_Name = OdiStats.First_Name;
First_Name Last_Name Country Matches Runs Centuries HalfCenturies
---------- ---------- ------- ------- ---- --------- --------------
Shikhar Dhawan Indi 133 5518 17 27
Jonathan Trott Sout 68 2819 4 22
Kumara Sangakkara Sril 404 14234 25 93
Virat Kohli Indi 239 11520 43 54
Rohit Sharma Indi 218 8686 24 42
sqlite>
Tham gia mệnh đề bằng Python
Sau ví dụ SQLite, minh họa mệnh đề JOIN bằng python -
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Retrieving data
sql = '''SELECT * from EMP INNER JOIN CONTACT ON EMP.CONTACT = CONTACT.ID'''
#Executing the query
cursor.execute(sql)
#Fetching 1st row from the table
result = cursor.fetchall();
print(result)
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
Đầu ra
[
('Ramya', 'Rama priya', 27, 'F', 9000.0, 101, 101, '[email protected]', 'Hyderabad'),
('Vinay', 'Battacharya', 20, 'M', 6000.0, 102, 102,'[email protected]', 'Vishakhapatnam'),
('Sharukh', 'Sheik', 25, 'M', 8300.0, 103, 103, '[email protected]', 'Pune'),
('Sarmista', 'Sharma', 26, 'F', 10000.0, 104, 104, '[email protected]', 'Mumbai')
]
Lớp sqlite3.Cursor là một thể hiện mà bạn có thể gọi các phương thức thực thi câu lệnh SQLite, tìm nạp dữ liệu từ các tập kết quả của các truy vấn. Bạn có thể tạo đối tượng Con trỏ bằng cách sử dụng phương thức con trỏ () của đối tượng / lớp Kết nối.
Thí dụ
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
Phương pháp
Sau đây là các phương thức khác nhau được cung cấp bởi lớp / đối tượng Cursor.
phương pháp | Sự miêu tả |
---|---|
hành hình() | Quy trình này thực thi một câu lệnh SQL. Câu lệnh SQL có thể được tham số hóa (tức là trình giữ chỗ thay vì các ký tự SQL). Mô-đun psycopg2 hỗ trợ trình giữ chỗ sử dụng ký hiệu% s Ví dụ: cursor.execute ("chèn vào người các giá trị (% s,% s)", (ai, tuổi)) |
thi hành () | Quy trình này thực thi một lệnh SQL chống lại tất cả các chuỗi tham số hoặc ánh xạ được tìm thấy trong chuỗi sql. |
fetchone () | Phương thức này tìm nạp hàng tiếp theo của tập kết quả truy vấn, trả về một chuỗi duy nhất hoặc Không có khi không có thêm dữ liệu. |
fetchmany () | Quy trình này tìm nạp tập hợp các hàng tiếp theo của kết quả truy vấn, trả về một danh sách. Một danh sách trống được trả về khi không còn hàng nào nữa. Phương thức cố gắng tìm nạp nhiều hàng như được chỉ ra bởi tham số kích thước. |
fetchall () | Quy trình này tìm nạp tất cả (còn lại) các hàng của kết quả truy vấn, trả về một danh sách. Một danh sách trống được trả về khi không có hàng nào. |
Tính chất
Sau đây là các thuộc tính của lớp Cursor:
phương pháp | Sự miêu tả |
---|---|
arraySize | Đây là một thuộc tính đọc / ghi mà bạn có thể đặt số hàng được trả về bởi phương thức fetchmany (). |
sự miêu tả | Đây là thuộc tính chỉ đọc trả về danh sách chứa mô tả các cột trong tập kết quả. |
cuối cùng | Đây là thuộc tính chỉ đọc, nếu có bất kỳ cột nào được tăng tự động trong bảng, thì nó sẽ trả về giá trị được tạo cho cột đó trong thao tác INSERT hoặc UPDATE cuối cùng. |
đếm số hàng | Điều này trả về số hàng được trả về / cập nhật trong trường hợp hoạt động CHỌN và CẬP NHẬT. |
kết nối | Thuộc tính chỉ đọc này cung cấp Kết nối cơ sở dữ liệu SQLite được sử dụng bởi đối tượng Con trỏ. |