Cách chuyển danh sách dưới dạng tham số trong truy vấn sql python

Các câu trả lời cho đến nay đã tạo khuôn mẫu các giá trị thành một chuỗi SQL đơn giản. Điều đó hoàn toàn tốt cho số nguyên, nhưng nếu chúng tôi muốn làm điều đó cho chuỗi, chúng tôi sẽ gặp sự cố thoát

Đây là một biến thể sử dụng truy vấn được tham số hóa sẽ hoạt động cho cả hai

placeholder= '?' # For SQLite. See DBAPI paramstyle.
placeholders= ', '.join[placeholder for unused in l]
query= 'SELECT name FROM students WHERE id IN [%s]' % placeholders
cursor.execute[query, l]

đã trả lời 12/11/2008 lúc 12. 30

16

Cách dễ nhất là biến danh sách thành

placeholder= '?' # For SQLite. See DBAPI paramstyle.
placeholders= ', '.join[placeholder for unused in l]
query= 'SELECT name FROM students WHERE id IN [%s]' % placeholders
cursor.execute[query, l]
9 trước

t = tuple[l]
query = "select name from studens where id IN {}".format[t]

đã trả lời 5 tháng 4 năm 2018 lúc 18. 51

Amir Imani Amir Imani

2.7112 huy hiệu vàng20 huy hiệu bạc23 huy hiệu đồng

13

Đừng phức tạp hóa nó, Giải pháp cho việc này rất đơn giản

l = [1,5,8]

l = tuple[l]

params = {'l': l}

cursor.execute['SELECT * FROM table where id in %[l]s',params]

Tôi hy vọng điều này đã giúp

đã trả lời 22/11/2016 lúc 9. 01

HÀNG HỢP HỢP HỢP

1.43517 huy hiệu bạc14 huy hiệu đồng

9

SQL bạn muốn là

select name from studens where id in [1, 5, 8]

Nếu bạn muốn xây dựng cái này từ con trăn, bạn có thể sử dụng

l = [1, 5, 8]
sql_query = 'select name from studens where id in [' + ','.join[map[str, l]] + ']'

Hàm bản đồ sẽ chuyển đổi danh sách thành danh sách các chuỗi có thể được dán lại với nhau bằng dấu phẩy bằng str. tham gia phương pháp

Ngoài ra

l = [1, 5, 8]
sql_query = 'select name from studens where id in [' + ','.join[[str[n] for n in l]] + ']'

nếu bạn thích biểu thức trình tạo hơn chức năng bản đồ

CẬP NHẬT. S. Lott đề cập trong các nhận xét rằng các liên kết SQLite của Python không hỗ trợ trình tự. Trong trường hợp đó, bạn có thể muốn

select name from studens where id = 1 or id = 5 or id = 8

được tạo bởi

________số 8

đã trả lời 12 tháng 11 năm 2008 lúc 11. 52

Blair Conrad Blair Conrad

224k25 huy hiệu vàng132 huy hiệu bạc111 huy hiệu đồng

3

sợi dây. tham gia các giá trị danh sách được phân tách bằng dấu phẩy và sử dụng toán tử định dạng để tạo chuỗi truy vấn

select name from students where id = |IN THE LIST l|
0

[Cảm ơn, blair-conrad]

đã trả lời 12 tháng 11 năm 2008 lúc 11. 49

gimel gimel

80. 2k10 huy hiệu vàng74 huy hiệu bạc104 huy hiệu đồng

1

Tôi thích câu trả lời của bobince

placeholder= '?' # For SQLite. See DBAPI paramstyle.
placeholders= ', '.join[placeholder for unused in l]
query= 'SELECT name FROM students WHERE id IN [%s]' % placeholders
cursor.execute[query, l]

Nhưng tôi nhận thấy điều này

select name from students where id = |IN THE LIST l|
2

Có thể được thay thế bằng

select name from students where id = |IN THE LIST l|
3

Tôi thấy điều này trực tiếp hơn nếu ít thông minh hơn và ít chung chung hơn. Ở đây

t = tuple[l]
query = "select name from studens where id IN {}".format[t]
0 được yêu cầu phải có độ dài [i. e. đề cập đến một đối tượng xác định phương thức
t = tuple[l]
query = "select name from studens where id IN {}".format[t]
1], đây không phải là vấn đề. Nhưng trình giữ chỗ cũng phải là một ký tự. Để hỗ trợ sử dụng trình giữ chỗ nhiều ký tự

select name from students where id = |IN THE LIST l|
4

đã trả lời 20/11/2010 lúc 14. 35

jimhark jimhark

4.8581 huy hiệu vàng25 huy hiệu bạc26 huy hiệu đồng

Nếu bạn đang sử dụng PostgreSQL với thư viện Psycopg2, bạn có thể để bộ thích ứng bộ của nó thực hiện tất cả phép nội suy chuỗi và thoát cho bạn, e. g

select name from students where id = |IN THE LIST l|
5

i. e. chỉ cần đảm bảo rằng bạn đang chuyển tham số

t = tuple[l]
query = "select name from studens where id IN {}".format[t]
2 dưới dạng
placeholder= '?' # For SQLite. See DBAPI paramstyle.
placeholders= ', '.join[placeholder for unused in l]
query= 'SELECT name FROM students WHERE id IN [%s]' % placeholders
cursor.execute[query, l]
9. nếu đó là
t = tuple[l]
query = "select name from studens where id IN {}".format[t]
4, bạn có thể sử dụng cú pháp mảng
t = tuple[l]
query = "select name from studens where id IN {}".format[t]
5

select name from students where id = |IN THE LIST l|
6

lưu ý rằng cả hai sẽ được chuyển thành cùng một gói truy vấn, vì vậy bạn chỉ nên sử dụng cái nào dễ hơn. e. g. nếu danh sách của bạn có trong một tuple, hãy sử dụng cái trước, nếu chúng được lưu trữ trong danh sách, hãy sử dụng cái sau

đã trả lời 18 tháng 12 năm 2019 lúc 20. 56

Sam Mason Sam Mason

13. 6k1 huy hiệu vàng35 huy hiệu bạc52 huy hiệu đồng

Giải pháp cho câu trả lời @umount, bởi vì nó đã bị hỏng với bộ một phần tử, vì [1,] không phải là SQL hợp lệ

select name from students where id = |IN THE LIST l|
7

Giải pháp khác cho chuỗi sql

select name from students where id = |IN THE LIST l|
8

đã trả lời 26/11/2014 lúc 9. 16

Ximix Ximix

3912 huy hiệu bạc9 huy hiệu đồng

1

Chỉ cần sử dụng inline if hoạt động với chức năng tuple

select name from students where id = |IN THE LIST l|
9

đã trả lời 23 tháng 9 năm 2020 lúc 9. 13

Kẻ thống trị tham lam Kẻ thống trị tham lam

1491 huy hiệu bạc14 huy hiệu đồng

1

Để chạy một lựa chọn từ nơi trường nằm trong danh sách các chuỗi [thay vì int], theo câu hỏi này, hãy sử dụng

t = tuple[l]
query = "select name from studens where id IN {}".format[t]
6. ví dụ đầy đủ

placeholder= '?' # For SQLite. See DBAPI paramstyle.
placeholders= ', '.join[placeholder for unused in l]
query= 'SELECT name FROM students WHERE id IN [%s]' % placeholders
cursor.execute[query, l]
0

trả lại.

t = tuple[l]
query = "select name from studens where id IN {}".format[t]
7

Đối với một danh sách các ngày trong Oracle, điều này đã làm việc

placeholder= '?' # For SQLite. See DBAPI paramstyle.
placeholders= ', '.join[placeholder for unused in l]
query= 'SELECT name FROM students WHERE id IN [%s]' % placeholders
cursor.execute[query, l]
1

trả lại.

t = tuple[l]
query = "select name from studens where id IN {}".format[t]
8

đã trả lời 25/11/2020 lúc 4. 27

citynorman citynorman

4.4702 huy hiệu vàng34 huy hiệu bạc38 huy hiệu đồng

1

placeholder= '?' # For SQLite. See DBAPI paramstyle.
placeholders= ', '.join[placeholder for unused in l]
query= 'SELECT name FROM students WHERE id IN [%s]' % placeholders
cursor.execute[query, l]
2

Điều này sẽ giải quyết vấn đề của bạn

đã trả lời 12 tháng 2 năm 2019 lúc 9. 21

placeholder= '?' # For SQLite. See DBAPI paramstyle.
placeholders= ', '.join[placeholder for unused in l]
query= 'SELECT name FROM students WHERE id IN [%s]' % placeholders
cursor.execute[query, l]
3

Ký hiệu

t = tuple[l]
query = "select name from studens where id IN {}".format[t]
9 có vẻ đơn giản hơn. [Trăn 3. 7]

đã trả lời 26 tháng 5 năm 2020 lúc 14. 23

user13476428 user13476428

611 huy hiệu vàng1 huy hiệu bạc3 huy hiệu đồng

một giải pháp đơn giản hơn

placeholder= '?' # For SQLite. See DBAPI paramstyle.
placeholders= ', '.join[placeholder for unused in l]
query= 'SELECT name FROM students WHERE id IN [%s]' % placeholders
cursor.execute[query, l]
4

đã trả lời 22 tháng 4 năm 2019 lúc 22. 59

Omar Omeiri Omar Omeiri

1.0651 huy hiệu vàng12 huy hiệu bạc26 huy hiệu đồng

Điều này sẽ hoạt động nếu số lượng giá trị trong danh sách bằng 1 hoặc lớn hơn 1

placeholder= '?' # For SQLite. See DBAPI paramstyle.
placeholders= ', '.join[placeholder for unused in l]
query= 'SELECT name FROM students WHERE id IN [%s]' % placeholders
cursor.execute[query, l]
5

đã trả lời 27 tháng 8 năm 2020 lúc 16. 48

raj raj

1661 huy hiệu bạc9 huy hiệu đồng

Ví dụ: nếu bạn muốn truy vấn sql

select name from studens where id in [1, 5, 8]

Thế còn

placeholder= '?' # For SQLite. See DBAPI paramstyle.
placeholders= ', '.join[placeholder for unused in l]
query= 'SELECT name FROM students WHERE id IN [%s]' % placeholders
cursor.execute[query, l]
7

đã trả lời 18 tháng 8 năm 2016 lúc 18. 02

pgalilea pgalilea

2412 huy hiệu bạc5 huy hiệu đồng

Điều này sử dụng thay thế tham số và xử lý trường hợp danh sách giá trị duy nhất

placeholder= '?' # For SQLite. See DBAPI paramstyle.
placeholders= ', '.join[placeholder for unused in l]
query= 'SELECT name FROM students WHERE id IN [%s]' % placeholders
cursor.execute[query, l]
8

đã trả lời 28 tháng 6 năm 2018 lúc 22. 08

Làm cách nào để chuyển danh sách giá trị trong SQL?

và sau đó sử dụng setParameterList["ids", list] chuyển danh sách của bạn. Hibernate sẽ thực hiện tất cả việc mở rộng cho bạn. Hiển thị hoạt động trên bài đăng này. Tất cả những gì bạn phải làm là xây dựng danh sách các mục được phân tách bằng dấu phẩy và chèn nó vào chuỗi.

Chúng ta có thể chuyển danh sách cho toán tử in trong SQL không?

Giới thiệu. Trong một câu lệnh SQL, chúng ta có thể sử dụng toán tử IN để kiểm tra xem một biểu thức có khớp với bất kỳ giá trị nào trong danh sách hay không . Như vậy, chúng ta có thể sử dụng toán tử IN thay cho nhiều điều kiện OR. Trong hướng dẫn này, chúng ta sẽ học cách chuyển một danh sách các giá trị vào mệnh đề IN của truy vấn mẫu Spring JDBC.

Làm cách nào để thêm truy vấn vào danh sách SQL?

Bạn có thể tạo danh sách các giá trị Truy vấn SQL hoặc Dữ liệu cố định. Trong ngăn thành phần Mô hình dữ liệu, nhấp vào Danh sách giá trị rồi nhấp vào Tạo danh sách giá trị mới . Nhập Tên cho danh sách và chọn Loại.

Truy vấn được tham số hóa trong python là gì?

Truy vấn được tham số hóa là truy vấn trong đó các phần giữ chỗ [ %s ] được sử dụng cho các tham số [giá trị cột] và các giá trị tham số được cung cấp tại thời điểm thực hiện

Chúng ta có thể chuyển danh sách cho toán tử in trong SQL không?

Trong câu lệnh SQL, chúng ta có thể sử dụng toán tử IN để kiểm tra xem một biểu thức có khớp với bất kỳ giá trị nào trong danh sách hay không . Như vậy, chúng ta có thể sử dụng toán tử IN thay cho nhiều điều kiện OR. Trong hướng dẫn này, chúng ta sẽ học cách chuyển một danh sách các giá trị vào mệnh đề IN của truy vấn mẫu Spring JDBC.

Chúng ta có thể chuyển nhiều giá trị trong truy vấn SQL tham số không?

Bạn chỉ có thể đặt một giá trị cho tham số tại một thời điểm và “Giá trị hiện tại” là trường bắt buộc. Ngay cả khi chúng tôi sử dụng truy vấn danh sách, chúng tôi vẫn cần nhập một giá trị hiện tại theo cách thủ công.

Tôi có thể sử dụng tham số trong truy vấn SQL không?

Truy vấn SQL được tham số hóa cho phép bạn đặt tham số trong truy vấn SQL thay vì một giá trị không đổi . Một tham số chỉ nhận một giá trị khi truy vấn được thực thi, điều này cho phép sử dụng lại truy vấn với các giá trị khác nhau và cho các mục đích khác nhau.

Chúng ta có thể chuyển tham số động trong truy vấn SQL không?

Truy vấn SQL động là những truy vấn được xây dựng trong thời gian chạy dựa trên một hoặc nhiều giá trị biến. Để thực hiện các truy vấn đó, chúng ta phải nối chúng thành một câu lệnh SQL và chuyển chúng dưới dạng tham số cho thủ tục lưu sẵn sp_executesql .

Chủ Đề