我有一个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)