回答

收藏

sql查询中的python列表作为参数

技术问答 技术问答 113 人阅读 | 0 人回复 | 2023-09-13

我有一个python列表,说l
) ^; _3 L6 M, V1 A( O3 \l = [1,5,8]
- F1 }5 B$ V. y/ P, N# B3 G我想编写一个sql查询来获取列表中所有元素的数据,例如
2 Z  k% B2 j" _5 |; |6 r8 iselect name from students where id = |IN THE LIST l|4 Y& D) \8 {9 s* E0 [
我该如何完成?
4 t1 S) N/ |* E/ h1 p2 _; Z6 @                / I. b0 C) ^* ]! K: l' h4 C9 n
解决方案:
1 E6 I, i( h- h$ J8 T               
& I: N; y0 F9 R- x6 I% _
; I+ z2 q0 r# ?- T7 M$ m, Y4 G% R' h- V2 ~
                到目前为止,答案一直是将这些值模板化为纯SQL字符串。这对于整数绝对没问题,但是如果我们想对字符串执行此操作,则会遇到转义问题。
3 u, F0 V% C7 p这是一个使用参数化查询的变体,它对两个都适用:
8 n$ S8 A  T5 O' Fplaceholder= '?' # For SQLite. See DBAPI paramstyle.: z$ r+ F& |5 ?5 a3 H
placeholders= ', '.join(placeholder for unused in l)* C. C+ A( D1 v* V* I# g* W
query= 'SELECT name FROM students WHERE id IN (%s)' % placeholders
' ?6 E4 P: X6 s7 R$ J8 Pcursor.execute(query, l)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则