将格式化和突出显示的多行文本 (SQL) 粘贴到 PyCharm 中的字符串文字中

Paste a formatted and higlighted multiline text (SQL) into string literal in PyCharm

PyCharm 中有没有办法将多行文本 (SQL) 粘贴到字符串文字中?例如:

SELECT column1
     , column2
FROM table1
WHERE column3 IN
(
    SELECT TOP(1) column4
    FROM table2
    INNER JOIN table3
    ON table2.column1 = table3.column1
)

进入:

sql = (
    "SELECT column1"
    "     , column2"
    "FROM table1"
    "..."
)

最好告诉 PyCharm 它是 SQL 语言的文本以突出语法?

使用""" """

sql = """
        SELECT column1
     , column2
FROM table1
WHERE column3 IN
(
    SELECT TOP(1) column4
    FROM table2
    INNER JOIN table3
    ON table2.column1 = table3.column1
)
"""

print(sql)

对于多行 SQL 查询,在 Python 中,您可以使用三引号:

query = """
SELECT column1
     , column2
FROM table1
WHERE column3 IN
(
    SELECT TOP(1) column4
    FROM table2
    INNER JOIN table3
    ON table2.column1 = table3.column1
)
"""

然而,对于语法高亮,由于 PyCharm 是专门为 Python 构建的,我认为您不能像 SQL 那样更改设置以高亮显示。可能有对此的扩展,但是,我不知道有任何扩展。

Is there a way in PyCharm to paste multiline text (SQL) into string literal?

是的。首先,您必须 "Create a live template" and since you want to paste the right function to use would be clipboard()。您可以通过转到 File > Settings > Editor > Live Templates 来完成此操作,如屏幕截图所示。

And ideally tell PyCharm it is text in SQL language to highlight syntax?

是的。您可以通过在代码段中使用 "language injection" 来完成此操作。如果你像下面的屏幕截图所示那样预先配置了它 PyCharm 应该自动检测 SQL 并应用语法突出显示。可以设置在File > Settings > Editor > Intention.

如果您没有将意图设置为自动检测,您也可以通过右键单击并选择“显示上下文操作”或按代码中的灯泡来手动设置(通过将SQL 字符串中的代码)。

选择您喜欢的SQL方言后,您还可以微调注入语言的语法高亮和语法检查。

Functionalities IDE path to dialogue
Syntax checks Settings > Editor > Inspections > SQL
Syntax highlights Settings > Editor > Color Sheme > SQL