Иногда приходится формировать sql запроса (where, set) из словаря, то есть имеющиеся значения вроде этих:
val = {'a': 1, 'c': 3, 'b': 2, 'd': 4}
необходимо представить в виде такой строки:
where = "`a`=Ƈ' and `c`=Ɖ' and `b`=ƈ' and `d`=Ɗ'"
Можно изобретать велосипед с циклами и дополнительными условиями, чтобы не поставить лишний and , можно воспользоваться замечательным синтаксисом python
a = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5 } where = " and ".join(["`%s`='%s'"%(k,a[k]) for k in a.keys() ])
Выглядит страшно, но всё просто: join объединяет список разделяя значения через " and ", а внутри [] скобок словарь преобразуется в список строк соответвутющих шаблону "`%s`='%s'", при этом всего одна строка и минимум ошибок
Зачем это нужно, а чтобы не встречать такого в чужом коде
def make_where(values): where = "where " for k in values: where += "`%s`='%s' and "%( k,values[k] ) return where[:-4]
Комментариев 0