我有一个python列表,说l . J# J0 ~9 X$ E g" E- |$ el = [1,5,8] 0 {# l1 F# P1 C' z我想编写一个sql查询来获取列表中所有元素的数据,例如 & d9 Y$ d. R5 M0 b4 j. q0 vselect name from students where id = |IN THE LIST l|1 J% g. ^9 s- y2 }
我该如何完成?4 z6 d2 O1 g% y y* d5 v y
$ }7 M- V/ h3 X& _1 v 解决方案:) @3 S8 P3 K9 ~. q4 c( w( ~
# b4 r- e4 ?4 r- X8 O* G, N
( H, f4 @4 O+ d7 {8 w* d9 \
& {* z& i7 _( Y4 J" v' w 到目前为止,答案一直是将这些值模板化为纯SQL字符串。这对于整数绝对没问题,但是如果我们想对字符串执行此操作,则会遇到转义问题。 , r$ i ]* K; J' ]4 A5 k+ t. C这是一个使用参数化查询的变体,它对两个都适用:6 Z$ H% B1 h* ? ?* M, [. X
placeholder= '?' # For SQLite. See DBAPI paramstyle.4 b! W. n1 A4 C j: k
placeholders= ', '.join(placeholder for unused in l)" l# ^ N+ M! Y- c. S8 ?
query= 'SELECT name FROM students WHERE id IN (%s)' % placeholders 7 p6 N' s) r8 K# Ycursor.execute(query, l)