Python MySQLdb字符串替换没有添加引号

时间:2010-10-14 19:49:35

标签: python mysql

我想将字符串替换用于以逗号分隔的列表,例如:

query = """SELECT id, name, image_id
           FROM users
           WHERE id IN (%s)
           """
values = (','.join(uids))
results = dbc.getAll(query, values

执行查询:

SELECT id, name, image_id
FROM users
WHERE id IN ('1,2,3')

哪个不能按预期工作。

如何进行替换,以便在没有引号的情况下获得查询,例如:

SELECT id, name, image_id
FROM users
WHERE id IN (1,2,3)

2 个答案:

答案 0 :(得分:3)

让MySQLdb执行整个参数替换。在这种情况下,预期参数values应该是序列(1,2,3),而不是字符串'1,2,3'

query = """SELECT id, name, image_id
           FROM users
           WHERE id IN %s
           """    
values = uids
results = dbc.getAll(query, [values])

答案 1 :(得分:1)

对我而言,它的工作方式如下:

cursor.execute(sql, (pids_list,))

我确保pids_list的元素是整数而不是字符串。