Python生成多行更新查询

2024-05-14 18:52:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是在Python中动态生成一个类似于

UPDATE SURV_SCF_ID_STATUS
    SET AGE_STATUS = CASE NAME
        WHEN 'entityXp1' THEN '1'
        WHEN 'entityXp3' THEN '0'
        WHEN 'entityXpto1' THEN '1'
        WHEN 'entityXpto3' THEN '1'
    END
WHERE NAME IN ('entityXp1', 'entityXp3', 'entityXpto1', 'entityXpto3')

这就是我目前所掌握的, 但还是觉得自己是个丑八怪

^{pr2}$

有没有更明显的方法? 我没有发现任何Python模块允许这样做。在

谢谢


Tags: nameid目标status动态updatewhenscf
1条回答
网友
1楼 · 发布于 2024-05-14 18:52:38

您可以通过

conditions_string = ' '.join(["\t\tWHEN %s THEN %s\n" % (x, y) for x, y in logs_age_list])

和where\u字符串

^{pr2}$

然后做一些类似的事情

sql = '''
UPDATE SURV_SCF_ID_STATUS
SET AGE_STATUS = CASE NAME
%s
END
WHERE NAME IN (%s)
''' % (conditions_string, where_string)

但一般来说,您应该尝试使用DB模块的execute方法来避免SQL注入。在

下面是一个来自http://docs.python.org/library/sqlite3.html的示例

# Never do this   insecure!
symbol = 'IBM'
c.execute("... where symbol = '%s'" % symbol)

# Do this instead
t = (symbol,)
c.execute('select * from stocks where symbol=?', t)

相关问题 更多 >

    热门问题