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]
текст недоступен
другие страницы раздела
- C/C++: Разбор параметров командной строки - unistd.h :: getopt
- С/C++: libconfig - библиотека для обработки конфигурационных файлов
- Python: strip split join
- jQuery: простые примеры
- Выбор платформы для презентаций
- Пакетная обработка DBF Foxpro файлов, Import в FoxPRO
- Расширение Firefox собственным Меню -- это очень просто
- Разработка открытой альтернативы закрытому отраслевому ПО "Архивный Фонд"
- Django использование select_related для оптимизации работы
- Linux Django pyodbc MSSQL
- Sqlite3 работа с несколькими базами
- python ProxyError
- Python: сортировка списков
- Flask.admin FileAdmin проблема с локалями
- Flask restful сериализация sqlalchemy моделей в Json поток
комментарии