Hướng dẫn .fetchall python



Câu lệnh SELECT được sử dụng để đọc các giá trị từ cơ sở dữ liệu.

Phương thức fetchall()

Python cung cấp phương thức fetchall() trả về dữ liệu được lưu trữ bên trong bảng dưới dạng các hàng. Chúng ta có thể lặp lại kết quả để có được các hàng riêng lẻ.

Ví dụ 1

import mysql.connector

#tạo đối tượng connection
myconn = mysql.connector.connect(host = "localhost", user = "root",
    passwd = "1234567890", database = "PythonDB")

#tạo đối tượng cursor
cur = myconn.cursor()

try:
    # select dữ liệu từ database
    cur.execute("SELECT * FROM Employee")
    
    # tìm nạp các hàng từ đối tượng con trỏ  
    result = cur.fetchall()

    for x in result:
        print(x); 

except:
    myconn.rollback()

myconn.close()

Kết quả:

('The Mac', 10001, 25000.0, 101, 'Hanoi')
('Vinh', 10002, 26000.0, 101, 'Hanoi')
('Trung', 10003, 26000.0, 102, 'Danang')
('Tân', 10004, 10000.0, 101, 'Hanoi')
('Quân', 10005, 30000.0, 103, 'HCM')

Ví dụ 2: đọc cột cụ thể

import mysql.connector

#tạo đối tượng connection
myconn = mysql.connector.connect(host = "localhost", user = "root",
    passwd = "1234567890", database = "PythonDB")

#tạo đối tượng cursor
cur = myconn.cursor()

try:
    # select dữ liệu từ database
    cur.execute("SELECT name, id, salary FROM Employee")
    
    # tìm nạp các hàng từ đối tượng con trỏ  
    result = cur.fetchall()

    for x in result:
        print(x); 

except:
    myconn.rollback()

myconn.close()

Kết quả:

('The Mac', 10001, 25000.0)
('Vinh', 10002, 26000.0)
('Trung', 10003, 26000.0)
('Tân', 10004, 10000.0)
('Quân', 10005, 30000.0)



Phương thức fetchone()

Phương thức fetchone() được sử dụng để chỉ tìm nạp một hàng từ bảng. Phương thức fetchone () trả về hàng tiếp theo của tập kết quả.

Ví dụ:

import mysql.connector

#tạo đối tượng connection
myconn = mysql.connector.connect(host = "localhost", user = "root",
    passwd = "1234567890", database = "PythonDB")

#tạo đối tượng cursor
cur = myconn.cursor()

try:
    # select dữ liệu từ database
    cur.execute("SELECT name, id, salary FROM Employee")
    
    # tìm nạp hàng đầu tiên từ đối tượng con trỏ  
    result = cur.fetchone()
    print(result);
    
    # tìm nạp hàng tiếp theo từ đối tượng con trỏ  
    result = cur.fetchone()
    print(result);

except:
    myconn.rollback()

myconn.close()

Kết quả:

('The Mac', 10001, 25000.0)
('Vinh', 10002, 26000.0)


Định dạng kết quả

Ví dụ:

import mysql.connector

#tạo đối tượng connection
myconn = mysql.connector.connect(host = "localhost", user = "root",
    passwd = "1234567890", database = "PythonDB")

#tạo đối tượng cursor
cur = myconn.cursor()

try:
    # select dữ liệu từ database
    cur.execute("SELECT name, id, salary FROM Employee")
    
    # tìm nạp các hàng từ đối tượng con trỏ  
    result = cur.fetchall()

    print("Name    ID    Salary")
    
    for row in result:
        print("%s    %d    %d"%(row[0],row[1],row[2]))

except:
    myconn.rollback()

Kết quả:

Name    ID    Salary
The Mac    10001    25000
Vinh    10002    26000
Trung    10003    26000
Tân    10004    10000
Quân    10005    30000





Câu lệnh SELECT được sử dụng để đọc các giá trị từ cơ sở dữ liệu.

Phương thức fetchall()

Python cung cấp phương thức fetchall() trả về dữ liệu được lưu trữ bên trong bảng dưới dạng các hàng. Chúng ta có thể lặp lại kết quả để có được các hàng riêng lẻ.

Ví dụ 1

import mysql.connector

#tạo đối tượng connection
myconn = mysql.connector.connect(host = "localhost", user = "root",
    passwd = "1234567890", database = "PythonDB")

#tạo đối tượng cursor
cur = myconn.cursor()

try:
    # select dữ liệu từ database
    cur.execute("SELECT * FROM Employee")
    
    # tìm nạp các hàng từ đối tượng con trỏ  
    result = cur.fetchall()

    for x in result:
        print(x); 

except:
    myconn.rollback()

myconn.close()

Kết quả:

('The Mac', 10001, 25000.0, 101, 'Hanoi')
('Vinh', 10002, 26000.0, 101, 'Hanoi')
('Trung', 10003, 26000.0, 102, 'Danang')
('Tân', 10004, 10000.0, 101, 'Hanoi')
('Quân', 10005, 30000.0, 103, 'HCM')

Ví dụ 2: đọc cột cụ thể

import mysql.connector

#tạo đối tượng connection
myconn = mysql.connector.connect(host = "localhost", user = "root",
    passwd = "1234567890", database = "PythonDB")

#tạo đối tượng cursor
cur = myconn.cursor()

try:
    # select dữ liệu từ database
    cur.execute("SELECT name, id, salary FROM Employee")
    
    # tìm nạp các hàng từ đối tượng con trỏ  
    result = cur.fetchall()

    for x in result:
        print(x); 

except:
    myconn.rollback()

myconn.close()

Kết quả:

('The Mac', 10001, 25000.0)
('Vinh', 10002, 26000.0)
('Trung', 10003, 26000.0)
('Tân', 10004, 10000.0)
('Quân', 10005, 30000.0)


Phương thức fetchone()

Phương thức fetchone() được sử dụng để chỉ tìm nạp một hàng từ bảng. Phương thức fetchone () trả về hàng tiếp theo của tập kết quả.

Ví dụ:

import mysql.connector

#tạo đối tượng connection
myconn = mysql.connector.connect(host = "localhost", user = "root",
    passwd = "1234567890", database = "PythonDB")

#tạo đối tượng cursor
cur = myconn.cursor()

try:
    # select dữ liệu từ database
    cur.execute("SELECT name, id, salary FROM Employee")
    
    # tìm nạp hàng đầu tiên từ đối tượng con trỏ  
    result = cur.fetchone()
    print(result);
    
    # tìm nạp hàng tiếp theo từ đối tượng con trỏ  
    result = cur.fetchone()
    print(result);

except:
    myconn.rollback()

myconn.close()

Kết quả:

('The Mac', 10001, 25000.0)
('Vinh', 10002, 26000.0)

Định dạng kết quả

Ví dụ:

import mysql.connector

#tạo đối tượng connection
myconn = mysql.connector.connect(host = "localhost", user = "root",
    passwd = "1234567890", database = "PythonDB")

#tạo đối tượng cursor
cur = myconn.cursor()

try:
    # select dữ liệu từ database
    cur.execute("SELECT name, id, salary FROM Employee")
    
    # tìm nạp các hàng từ đối tượng con trỏ  
    result = cur.fetchall()

    print("Name    ID    Salary")
    
    for row in result:
        print("%s    %d    %d"%(row[0],row[1],row[2]))

except:
    myconn.rollback()

Kết quả:

Name    ID    Salary
The Mac    10001    25000
Vinh    10002    26000
Trung    10003    26000
Tân    10004    10000
Quân    10005    30000


Nếu bạn đang sử dụng truy vấn của mình để chỉ nhận một giá trị, bạn chỉ có thể lấy chỉ mục thứ 0.

results = cursor.fetchall()

nếu kết quả chỉ có một giá trị sử dụng results[0]. Nó sẽ cung cấp cho bạn giá trị mà bạn đang tìm kiếm. Đôi khi chúng ta nhận được một kết quả lớn khi chúng ta chạy một truy vấn, trong tình huống này, chúng ta sẽ phải lặp lại các giá trị và gán nó vào danh sách.

>>> result
('58',)
>>> result[0]
'58'

Khi bạn chạy truy vấn cho các mục lớn, bạn nhận được kết quả như thế này khi bạn sử dụng curosr.fetchall ()

(('58',),('50',),('10'),)

Sử dụng mã sau để lấy dữ liệu ở định dạng danh sách

>>> results=(('58',),('50',),('10'),)
>>>[x[0] for x in results] --> code
   ['58', '50', '1']

3 hữu ích 0 bình luận chia sẻ

Có vẻ như bạn có hai colunms trong bảng, vì vậy mỗi hàng sẽ chứa hai phần tử.

Cách dễ nhất là lặp qua chúng theo cách này:

for column1, column2 in data:

Điều đó giống như:

for row in data:
    column1, column2 = row

Bạn cũng có thể, như bạn đã cố gắng:

for row in data:
    print row[0] # or row[i]
    print row[1] # or row[j]

Nhưng điều đó không thành công vì bạn đã ghi đè i bằng giá trị của cột đầu tiên, trong dòng này: for i, row in data:.

CHỈNH SỬA

Nói chung, BTW, bạn sẽ không bao giờ cần mẫu này trong Python:

i = 0
for ...:
    ...
    i += 1

Thay vào đó, thông thường chỉ cần làm:

for item in container:
    # use item

# or, if you really need i:
for i, item in enumerate(container):
    # use i and item