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-pythonSử 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 listNố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 TuplesHã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())