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