Hướng dẫn convert cursor to list python - chuyển đổi con trỏ sang danh sách python

Nếu bạn có một sự khác biệt trong Python, để lập danh sách, người ta có thể gọi đơn giản là

.\myenv\Scripts\activate  (windows)

source /myenv/bin/activate  (linux)
0 tích hợp:

list(cursor.fetchall())

Lưu ý rằng một điều không thể điều chỉnh thường hữu ích như một danh sách, và có khả năng hiệu quả hơn như nó có thể lười biếng.

Mã ban đầu của bạn thất bại vì nó không quá nhiều ý nghĩa. Bạn lặp qua các hàng và liệt kê chúng, vì vậy bạn nhận được

.\myenv\Scripts\activate  (windows)

source /myenv/bin/activate  (linux)
1, v.v. - điều này có nghĩa là bạn đang xây dựng một danh sách mục thứ n của mỗi hàng thứ n, đó không phải là điều bạn muốn.

Mã này cho thấy một số vấn đề - trước tiên,

.\myenv\Scripts\activate  (windows)

source /myenv/bin/activate  (linux)
0 mà không có bất kỳ đối số nào thường được thay thế tốt hơn bằng một danh sách trống theo nghĩa đen (
.\myenv\Scripts\activate  (windows)

source /myenv/bin/activate  (linux)
3), vì nó dễ đọc hơn.

Tiếp theo, bạn đang cố gắng lặp lại bằng chỉ mục, đây là một ý tưởng tồi trong Python. Vòng lặp qua các giá trị, bản thân, không chỉ định bạn sử dụng để có được giá trị.

Cũng lưu ý rằng khi bạn cần xây dựng một danh sách các giá trị như thế này, việc hiểu danh sách là cách tốt nhất để làm điều đó, thay vì tạo một danh sách, sau đó nối lại nó.

Khi xử lý các truy vấn cơ sở dữ liệu, chúng tôi sử dụng vòng lặp để truy cập vào từng bản ghi và xử lý nó tại một thời điểm. Trong một số trường hợp, tốt hơn là đối phó với cơ sở dữ liệu dẫn đến một biến vì vậy chúng tôi không cần truy vấn lại. Đối tượng danh sách Python cho phép chúng tôi lưu trữ kết quả truy vấn SQL một cách dễ dàng vì nó cho phép trùng lặp và cho phép thay đổi.

Bài đăng này là phần tiếp theo của bài viết của Viết Viết một danh sách cho CSV File. Trong trường hợp này, chúng tôi đang truy vấn cơ sở dữ liệu và tải kết quả vào một số đối tượng Python như danh sách, tuple và từ điển.

Lưu ý: Chúng tôi sẽ bỏ qua môi trường ảo .. (MySQL Ex. Tại đây) .. nhưng bạn nên sử dụng môi trường ảo cho tất cả các dự án của bạn.: We’re going to skip the virtual environment.. (MySQL Ex. Here) ..but it is recommended to use a virtual environment for all your projects.

Môi trường Python kết nối với MySQL

Bạn nên quen thuộc với việc tạo và kết nối với cơ sở dữ liệu MySQL. Dưới đây là một số mã mẫu nhanh để cài đặt trong môi trường Python mới.

1. Kích hoạt môi trường activate the environment

.\myenv\Scripts\activate  (windows)

source /myenv/bin/activate  (linux)

2. Cài đặt trình điều khiển MySQL

pip install mysql-connector-python

Sử dụng ví dụ sau để kết nối với cơ sở dữ liệu MySQL localhost.

import mysql.connector

conn = mysql.connector.connect(
    host="localhost",
    database="somedbname",
    user="myuser",
    password="goodpasswd" )

Danh sách Python là gì []

Danh sách tương tự như một mảng trong các ngôn ngữ khác và nó được lập chỉ mục bắt đầu 0. Danh sách có thể chứa các chuỗi, số và đối tượng, đây là một số ví dụ chuỗi đơn giản.

string = []   ## New empty List
string1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
string2 = ['Brazil', 'Panama', 'Canada', 'India', 'Decentraland']
number = [2,3.6,7,-23,99]  ## can contain decimal and negative numbers
together = string1[0:2] + string2[2:5] + number[2:4]  ## concatenate lists

print(string1[3])    ## get just 1 value
print(string2[4])
print(string1[2:5])  ## Range: get values from index 2 -> 5
print(number[1:5])
print(together)      Values from all 3 in 1 list

string1[:] = []  ## clear the list

Nối vào danh sách []

newlist = ['Houston']
newlist.append('Decentraland') ## append just 1 string
newlist.append(string2[2])  ## append the 3rd value from another list
newlist.append(number)  ## append the entire number list
print(newlist)

Bảng và truy vấn MySQL

Đối với mẫu này, tôi đã tạo một bảng có tên là My Myusers, bao gồm tên người dùng, họ và thành phố họ làm việc. Trong ví dụ này, chúng tôi đang sử dụng con trỏ và sau đó truy vấn bảng này cho bản ghi đầu tiên (DB Tales Com) và Sau đó, tất cả chúng. Hãy nhớ rằng Python đang trả lại một tuple () cho một bản ghi nhưng sau đó một danh sách có nhiều bộ dữ liệu có chứa dữ liệu của chúng tôi, chúng tôi cũng đang truy vấn 3 trường từ cơ sở dữ liệu.

cursor = conn.cursor()
cursor.execute("SELECT fname, lname, city FROM myusers")
onerecord = cursor.fetchone()
results = cursor.fetchall()
print(onerecord)  ## returns as a Tuple
print(results)   ## returns as a List of Tuples

Hãy nói rằng chúng tôi chỉ quan tâm đến một danh sách tên cuối cùng và chúng tôi muốn nó được lưu trữ trong một danh sách duy nhất. Chúng ta có thể tạo một danh sách trống và lặp lại thông qua tuple () được trả về bởi con trỏ.

cursor = conn.cursor()
cursor.execute("SELECT lname FROM myusers")
lastnames = []

for row in cursor:
    for field in row:
        lastnames.append(field)

print(lastnames)

Hãy nhớ rằng chúng tôi chỉ chọn một trường trong truy vấn. Nếu có nhiều hơn 1 trường, chẳng hạn như tên đầu tiên và tên cuối cùng, bạn sẽ kết thúc với một danh sách chứa tất cả các trường.

MySQL to Python Danh sách [] & Dictionary {}

Một tùy chọn khác để xem xét là sử dụng cài đặt con trỏ từ điển để trả về từ điển {} với các phím và sau đó chúng tôi kết thúc chỉ với các giá trị từ truy vấn. Sau đó, chúng tôi có thể lặp lại thông qua chúng bằng cách sử dụng các giá trị trường từ truy vấn của chúng tôi.

cursor = conn.cursor(dictionary=True)  ## available in v2
cursor.execute("SELECT fname, lname, city FROM myusers")

for row in cursor:
    print(row['fname'] + ' ' + row['lname'] + ' from ' + row['city'])

Cuối cùng, con trỏ có thể trả lại các bản ghi dưới dạng từ điển Key, tất cả được bao gồm trong một danh sách. Mỗi bản ghi là từ điển riêng của nó với khóa được đặt tên theo tên trường cơ sở dữ liệu.

cursor = conn.cursor(dictionary=True)
cursor.execute("SELECT fname, lname, city FROM myusers")

print(cursor.fetchall())

Con trỏ Fetchall () làm gì?

Phương thức Fetchall (). Phương thức lấy tất cả (hoặc tất cả các hàng còn lại) của bộ kết quả truy vấn và trả về một danh sách các bộ dữ liệu. Nếu không có thêm hàng, nó sẽ trả về một danh sách trống.fetches all (or all remaining) rows of a query result set and returns a list of tuples. If no more rows are available, it returns an empty list.

Làm cách nào để chuyển đổi kết quả thành một danh sách trong Python?

Basics..
Để chuyển đổi thành danh sách Python bình thường, hãy sử dụng phương thức TO_LIST: res_list = res.liệt kê().
Để chuyển đổi thành danh sách các từ điển Python, hãy sử dụng phương thức TO_DICT: res_dict = res.to_dict ().
Để tại chỗ sắp xếp tập hợp, sử dụng phương thức sắp xếp: res.Sắp xếp ('z').

Làm cách nào để sử dụng Fetchall trong Python?

Các bước để sử dụng fetchall () trong mysql bằng python: tiếp theo, tạo một đối tượng con trỏ với phương thức con trỏ ().Bây giờ hãy tạo và thực thi truy vấn bằng cách sử dụng câu lệnh SELECT SELECT *với phương thức EXECUTE () để truy xuất dữ liệu.Sử dụng phương thức fetchall () trên biến kết quả.In kết quả bằng cách sử dụng cho mỗi vòng lặp để hiển thị tất cả.

Làm thế nào để bạn lưu trữ một truy vấn dẫn đến một biến trong Python?

Fetchall () Lấy tất cả các kết quả từ truy vấn của bạn, chúng tôi sẽ đặt chúng vào một biến gọi là hàng.Sau đó, chúng tôi tạo một iterator (điều bạn đã cố gắng thực hiện với vòng lặp trong khi) bằng cách làm cho hàng theo hàng.Sau đó, chúng tôi chỉ cần in từng hàng.