Tôi có một danh sách trong Python.
article_ids = [1,2,3,4,5,6]
Tôi cần sử dụng danh sách này trong câu lệnh SQL như thế này:
SELECT id FROM table WHERE article_id IN [article_ids]
Làm thế nào tôi có thể cung cấp danh sách này cho điều khoản
SELECT id FROM table WHERE article_id IN [article_ids]
5 của tôi?Tôi đã thử một số cách mà tôi googled, nhưng tôi không thể tìm ra nó.
>> print ids_list
placeholders= ', '.join['?'*len[ids_list]] # "?, ?, ?, ... ?"
query = 'SELECT article_id FROM article_author_institution WHERE institution_id IN [{}]'.format[placeholders]
print query
cursor.execute[query, ids_list]
Thông báo lỗi tôi nhận được:
SELECT article_id FROM article_author_institution WHERE institution_id IN [?]
query = query % db.literal[args]
TypeError: not all arguments converted during string formatting
Ví dụ:
ids_list = [9,10]
placeholders= ', '.join['%'*len[ids_list]] # "?, ?, ?, ... ?"
query = 'SELECT aid FROM article_author_institution WHERE instid IN [{}]'.format[placeholders]
print query
cursor.execute[query, ids_list]
Thông báo đầu ra và lỗi là:
SELECT aid FROM article_author_institution WHERE instid IN [%, %]
Traceback [most recent call last]:
File "deneme3.py", line 11, in
cursor.execute[query, ids_list]
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 159, in execute
query = query % db.literal[args]
ValueError: unsupported format character ',' [0x2c] at index 61
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 []
SELECT id FROM table WHERE article_id IN [article_ids]
0Bả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.
SELECT id FROM table WHERE article_id IN [article_ids]
1Hã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ỏ.
SELECT id FROM table WHERE article_id IN [article_ids]
2Hã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.
SELECT id FROM table WHERE article_id IN [article_ids]
3Cuố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.
SELECT id FROM table WHERE article_id IN [article_ids]
4