AI Agent操作数据库:说人话查数据,自动翻译成SQL
🩺 摘要
不会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一个专门的只读数据库账号,从数据库层面限制权限。
💬 评论 (0)