You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python脚本中保留SQL格式同时去除AS后的多余空格?

解决SQLAlchemy创建视图时的空格问题

你可以通过以下几种方式实现需求:

方法1:拆分字符串拼接

直接将SQL语句拆分为两个字符串,在Python代码中保持缩进格式,同时确保生成的SQL里AS后只有一个空格:

from sqlalchemy.sql import text
from app.core.config import settings

# CREATE VIEWS
all_recent_tasks = text(
    "CREATE OR REPLACE VIEW all_recent_tasks AS "
    f"SELECT COUNT(*) FROM tasks WHERE creation_time >= NOW() - INTERVAL '{settings.common.metrics_pause_minutes} minutes';"
)

生成的SQL会变成:

DEBUG__ CREATE OR REPLACE VIEW all_recent_tasks AS SELECT COUNT(*) FROM tasks WHERE creation_time >= NOW() - INTERVAL '25 minutes';

方法2:三重引号+替换换行缩进

如果SQL语句更长,适合用三重引号编写(保留代码缩进),再通过字符串替换去掉换行和多余缩进:

from sqlalchemy.sql import text
from app.core.config import settings

# CREATE VIEWS
all_recent_tasks = text(
    f"""CREATE OR REPLACE VIEW all_recent_tasks AS
       SELECT COUNT(*) FROM tasks WHERE creation_time >= NOW() - INTERVAL '{settings.common.metrics_pause_minutes} minutes';""".replace('\n       ', ' ')
)

这种方式既保留了Python代码里的缩进结构,又能将生成SQL中AS后的换行缩进替换为单个空格。

方法3:括号包裹多行字符串

利用Python的字符串隐式拼接特性,用括号包裹多行字符串,代码里保持缩进,生成的SQL自动合并为无多余空格的语句:

from sqlalchemy.sql import text
from app.core.config import settings

# CREATE VIEWS
all_recent_tasks = text(
    ("CREATE OR REPLACE VIEW all_recent_tasks AS "
     f"SELECT COUNT(*) FROM tasks WHERE creation_time >= NOW() - INTERVAL '{settings.common.metrics_pause_minutes} minutes';")
)

内容的提问来源于stack exchange,提问作者mascai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 05:18:12