Skip to content

数据库工具

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 可能触发了安全规则。检查:

  1. 是否使用了危险操作
  2. 是否缺少 WHERE 条件
  3. 是否超过了行数限制

Q: 连接失败

A: 数据库连接配置错误。检查:

  1. 连接字符串是否正确
  2. 数据库是否可访问
  3. 凭证是否正确

Q: 超时错误

A: 查询时间过长。尝试:

  1. 添加索引
  2. 优化查询
  3. 增加超时时间

🔗 相关链接


数据库操作有问题随时问我

Released under the MIT License.