Моя цель - динамически генерировать в Python SQL-запрос, похожий на
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')
Это то, что я имею до сих пор, но все еще ощущается как уродливый хак
logs_age_list = [['entityXp1', '1'], ['entityXp3', '0'], ['entityXp1', '1'], ['entityXpto3', '1']]
conditions_list = []
where_list = []
for entity, status in logs_age_list:
conditions_list.append("\t\tWHEN %(entity)s THEN %(value)s" % locals() )
where_list.append(entity)
conditions_string = '\n'.join(conditions_list)
where_string = ', '.join(where_list)
sql = '''
UPDATE SURV_SCF_ID_STATUS
SET AGE_STATUS = CASE NAME
%(conditions_string)s
END
WHERE NAME IN (%(where_string)s)
''' % locals()
print sql
Есть ли более очевидный способ сделать это?Я не нашел ни одного модуля Python, который бы позволял это.
Спасибо