使用字符串%s替换加入python中的字符串列表

时间:2010-09-29 02:30:33

标签: python string-concatenation

我有一个我希望加入字符串的整数列表

ids = [1,2,3,4,5]

看起来像'Id = 1或Id = 2或Id = 3或Id = 4或ID = 5'

我现在有一个答案,但我认为获得小组的意见可能会很好

编辑:向不应该说的人提供更多信息...... 这不是直接生成SQL,这是动态表达式,它被发送到使用下面的Entity Framework的Ado.net数据服务层。当前,服务中的动态表达式处理程序/ EF4适配器不支持首选的IN子句,我暂时不得不求助于多个equals语句。

2 个答案:

答案 0 :(得分:5)

" or ".join("id = %d" % id for id in ids)

答案 1 :(得分:1)

mystring = 'id =' + 'or id ='.join(str(i) for i in ids)

如果你想生成动态的sql,就像评论中指出的那样(不知道我是怎么错过的),你应该这样做

mystring = ' or '.join(['id = ?']*len(ids))  

其中?应替换为数据库库的相应转义序列。对于sqlite3,那是?。对于MySQLdb,它使用printf代码IIRC。然后,您可以将id的列表作为第二个参数(通常)传递给光标,然后它将以安全的方式将它们放在那里。这总是正确的。