AI Agent操作数据库:说人话查数据,自动翻译成SQL

📘 AI教程 💬 🔥 Trending

🩺 摘要

不会SQL也能查数据库。Agent把「上个月卖了多少单「翻译成SQL,查完再把结果说给你听。

📝 详情

一个Agent的核心能力:用户说人话,Agent翻译成SQL,执行查询,再把结果翻译回人话。

工作原理

用户:"去年哪个产品卖得最好?"
      ↓
Agent(生成SQL)
Agent:SELECT product_name, SUM(quantity) as total 
       FROM orders WHERE year = 2025 
       GROUP BY product_name ORDER BY total DESC LIMIT 1
      ↓
执行SQL → 得到结果
      ↓
Agent(翻译回人话)
"去年卖得最好的是XXX,总销量YYY件。"

安全措施

Agent访问数据库最危险的事:它可能执行破坏性操作。

# 只允许SELECT查询
def execute_safe_query(sql: str) -> list:
    if sql.strip().upper().startswith("SELECT"):
        return execute(sql)
    else:
        raise Exception("只允许查询操作")

总结

Agent + 数据库 = 自然语言数据接口。 但一定要加安全限制——只读查询可以,写操作必须人工确认。

安全性增强

只读查询可以用Agent,写操作需要严格限制:

import sqlparse

def safe_query(sql):
    parsed = sqlparse.parse(sql)[0]
    # 只允许SELECT
    if parsed.get_type() != 'SELECT':
        raise PermissionError("只允许查询操作")

    # 禁止危险函数
    forbidden = ['INTO OUTFILE', 'LOAD_FILE', 'BENCHMARK']
    for f in forbidden:
        if f in sql.upper():
            raise PermissionError(f"禁止使用: {f}")

    return execute_with_timeout(sql, timeout=10)

推荐给Agent一个专门的只读数据库账号,从数据库层面限制权限。