数据库工具
taskflow_database 提供安全的数据库操作能力
📋 可用工具
| 工具名 | 功能 | 安全性 |
|---|---|---|
taskflow_database_query | 执行 SQL 查询 | ✅ Medium |
taskflow_database_init | 初始化数据库 | ✅ Medium |
taskflow_database_schema | 获取数据库 Schema | ✅ Low |
taskflow_database_tables | 列出所有表 | ✅ Low |
🔧 工具详解
query
执行 SQL 查询。
参数:
json
{
"connection": "string", // 连接名(必填)
"sql": "string", // SQL 语句(必填)
"params": [], // 参数(可选)
"timeout": 60000 // 超时时间(毫秒,可选)
}示例:
Claude: 帮我查询 users 表的所有数据调用:
json
{
"name": "taskflow_database_query",
"arguments": {
"connection": "default",
"sql": "SELECT * FROM users"
}
}返回:
json
{
"success": true,
"rows": [
{"id": 1, "name": "Alice"},
{"id": 2, "name": "Bob"}
],
"rowCount": 2,
"duration": 45
}schema
获取数据库 Schema。
参数:
json
{
"connection": "string" // 连接名(必填)
}示例:
Claude: 查看数据库结构调用:
json
{
"name": "taskflow_database_schema",
"arguments": {
"connection": "default"
}
}返回:
json
{
"success": true,
"tables": [
{
"name": "users",
"columns": [
{"name": "id", "type": "INTEGER", "primaryKey": true},
{"name": "name", "type": "TEXT"}
]
}
]
}🔒 安全机制
1. SQL 注入防护
所有参数都使用参数化查询:
typescript
// ✅ 安全:参数化查询
await db.query('SELECT * FROM users WHERE id = ?', [userId]);
// ❌ 危险:字符串拼接
await db.query(`SELECT * FROM users WHERE id = ${userId}`);2. 只读模式
支持只读连接:
yaml
connections:
production:
url: postgres://...
readOnly: true # 只读模式3. 查询限制
| 限制项 | 默认值 |
|---|---|
| 返回行数 | 1000 |
| 查询时间 | 60 秒 |
| 结果大小 | 10 MB |
4. 敏感操作限制
以下操作被限制:
sql
-- ❌ 被阻止
DROP TABLE
TRUNCATE TABLE
DELETE FROM (without WHERE)
UPDATE (without WHERE)💡 使用技巧
技巧一:数据探索
Claude: 帮我看看数据库里有什么表Claude 会调用 tables 工具列出所有表。
技巧二:查询优化
Claude: 帮我优化这个查询Claude 会分析查询并建议优化方案。
技巧三:数据验证
Claude: 验证用户数据是否完整Claude 会执行验证查询并返回结果。
🐛 常见问题
Q: 查询被拒绝
A: SQL 可能触发了安全规则。检查:
- 是否使用了危险操作
- 是否缺少 WHERE 条件
- 是否超过了行数限制
Q: 连接失败
A: 数据库连接配置错误。检查:
- 连接字符串是否正确
- 数据库是否可访问
- 凭证是否正确
Q: 超时错误
A: 查询时间过长。尝试:
- 添加索引
- 优化查询
- 增加超时时间
🔗 相关链接
数据库操作有问题随时问我