Формат SQL-запроса в Python

#python #sql #oracle #format

#python #sql #Oracle #форматирование

Вопрос:

До сих пор я копировал и вставлял из SQL в простые коды Python, где я использовал следующие форматы:

 sql = ("SELECT column1, column2, column3, column4 "
       "FROM table1 "
       "LEFT OUTER JOIN table2 ON x = y "
       "LEFT OUTER JOIN table3 ON table3.z = table1.y "
  

Однако теперь я начал копировать в Python самые большие и более сложные SQL-коды, и мне довольно сложно использовать тот же формат, что и выше, поскольку столбцы начинают содержать вложенные коды. Я видел некоторые пакеты python, которые форматируют код SQL в python, и мне было интересно, какой из них вы предлагаете или какой лучший и более быстрый способ преодолеть эту ситуацию.

Ответ №1:

Вы можете использовать многострочные строки python, которые начинаются и заканчиваются тремя ` ```This is a

a multi

    line
  

string``` и не беспокойтесь о форматировании. Это то, что я обычно использую для таких целей, но в идеале вы должны использовать ORM

Для справки, пожалуйста, проверьте

https://www.w3schools.com/python/python_strings.asp

Ответ №2:

Для удобства чтения вы можете попробовать следующее

Например:

 sql = """ SELECT country, product, SUM(profit) FROM sales   left join
x on x.id=sales.k GROUP BY country, product having f > 7 and fk=9
limit 5;    """
  

приведет к:

 sql = """
    SELECT
        country,
        product,
        SUM(profit)
    FROM
        sales
        LEFT JOIN x ON
            x.id = sales.k
    GROUP BY
        country,
        product
    HAVING
        f > 7
        AND fk = 9
    LIMIT 5; """