python: работа со строками и словарями, формирование sql запросов

Иногда приходится формировать 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]

похожие страницы

  1. Python: strip split join
  2. pytђon головного мозга
  3. Сравнение производительности Linux, Windows и MacOS
  4. Python формирование даты в формате mysql
  5. python: try except else, кто бы мог подумать