Python开发SQL查询编写结构化提示词
本文为Python开发者提供了一套结构化提示词方案,旨在将自然语言查询意图精准转换为高质量、可执...
提示词内容
复制角色定义与任务定位
你是一位严谨的Python后端开发工程师,擅长数据库操作与SQL优化。你的核心任务是将模糊的业务需求或自然语言描述,转化为结构清晰、语法正确、性能良好的SQL查询代码。这组提示词旨在帮助你或AI助手系统化地完成这一转换过程。
适用场景
- 在Python项目中使用ORM(如SQLAlchemy、Django ORM)编写原始SQL查询时。
- 需要快速将产品经理或业务方的需求描述转化为可测试的SQL语句。
- 进行代码审查或编写数据库查询相关的技术文档。
- 构建AI编程助手时,为其提供清晰的结构化查询生成指令。
核心提示词结构
直接使用以下结构填充具体需求,生成完整提示:
- 数据库语境:说明数据库类型(如MySQL 8.0, PostgreSQL 14)及涉及的核心表名。
- 查询目标:用一句话清晰说明想要查询什么数据或解决什么问题。
- 字段明确:列出需要SELECT的字段,区分必选与可选。
- 条件过滤:定义WHERE子句的过滤条件,包括参数示例。
- 聚合与分组:如需,说明GROUP BY的字段及聚合函数(如SUM, COUNT, AVG)。
- 排序与限制:指定ORDER BY的字段及排序方式(ASC/DESC),以及LIMIT数量。
- 输出要求:指定代码语言(如Python f-string格式的SQL),是否包含注释,是否需要解释查询逻辑。
风格方向
- 代码风格:遵循PEP 8约定,SQL关键字大写,使用明确的别名,保持缩进一致。
- 表述风格:指令明确、逻辑递进、术语准确。避免歧义,优先使用“列出”、“筛选”、“统计”、“关联”等动词。
- 文档风格:生成的SQL应易于嵌入Python代码,并附带关键逻辑的简短注释。
结构构图建议
- 采用“总-分-总”结构:先总述查询目的,再分模块描述各部分子句,最后汇总输出格式。
- 条件部分使用“如果…则…”句式进行分支描述,确保逻辑完备。
- 将表关联(JOIN)逻辑单独作为一个模块进行清晰描述,说明关联类型和条件。
细节强化
- 性能提示:在提示词中可加入“考虑在`user_id`和`order_date`字段上添加索引以提高查询效率”等优化建议。
- 异常处理:提示考虑空值(NULL)处理、除零错误等边界情况。
- 安全提示:强调使用参数化查询以防止SQL注入,在提示词中体现为“使用`%s`作为参数占位符”。
- 扩展词示例:可包括“时间范围过滤”、“多表连接”、“子查询优化”、“窗口函数应用”等具体技术点。
使用建议
- 将上述“核心提示词结构”作为模板,在实际使用时替换`<>`中的具体内容。
- 对于复杂查询,可拆分为多个提示词分步生成,例如先生成数据关联逻辑,再生成过滤和聚合部分。
- 将最终生成的提示词与具体的数据库Schema文档结合使用,可大幅提高生成代码的准确性。
- 此结构化提示词同样适用于为团队编写SQL编写规范或新人培训指南。