Python SQL форматирование строки запроса - PullRequest
75 голосов
/ 09 марта 2011

Я пытаюсь найти лучший способ отформатировать строку запроса sql.Когда я отлаживаю свое приложение, я хочу войти в файл для всех строк запроса sql, и важно, чтобы строка была правильно отформатирована.

Опция 1

def myquery():
    sql = "select field1, field2, field3, field4 from table where condition1=1 and condition2=2"
    con = mymodule.get_connection()
    ...
  • Это хорошо для печати строки sql.
  • Не очень хорошее решение, если строка длинная и не соответствует стандартной ширине в 80 символов.

Вариант 2

def query():
    sql = """
        select field1, field2, field3, field4
        from table
        where condition1=1
        and condition2=2"""
    con = mymodule.get_connection()
    ...
  • Здесь код понятен, но когда вы печатаете строку запроса sql, вы получаете все эти надоедливые пробелы.

    u '\ nВыберите поле1, поле2, поле3, поле4 \ n_ _ ___ из таблицы \ n _ ___ , где условие1 = 1 \ n _ ___ _и условие2 = 2 '

Примечание: я заменил пробелы на подчеркивание _, потому что они обрезаны редактором

Опция 3

def query():
    sql = """select field1, field2, field3, field4
from table
where condition1=1
and condition2=2"""
    con = mymodule.get_connection()
    ...
  • Мне не нравится эта опция, потому что она ломаетчеткость хорошо табулированного кода.

Вариант 4

def query():
    sql = "select field1, field2, field3, field4 " \
          "from table " \
          "where condition1=1 " \
          "and condition2=2 "
    con = mymodule.get_connection()    
    ...
  • Мне не нравится эта опция, потому что все лишние набирают в каждомтакже трудно редактировать запрос.

Для меня лучшим решением будет Вариант 2 , но мне не нравятся лишние пробелы, когда я печатаю строку sql.

Известны ли вам какие-либо другие варианты?

Ответы [ 11 ]

0 голосов
/ 09 марта 2011

вы можете поместить имена полей в массив «fields», а затем:


sql = 'select %s from table where condition1=1 and condition2=2' % (
 ', '.join(fields))
...