在Node-RED中操作SQLite数据库
在Node-RED中安全高效地操作SQLite数据库。
·
在Node-RED中操作SQLite数据库进行增删改查,可以按照以下步骤进行:
1. 安装SQLite节点
- 在Node-RED中安装
node-red-node-sqlite节点:- 点击右上角菜单 → Manage palette → Install。
- 搜索
node-red-node-sqlite并安装。
2. 配置SQLite数据库连接
- 拖拽一个 SQLite 节点到画布。
- 双击节点配置:
- Database:填写SQLite数据库文件路径(如
./mydatabase.db,会自动创建)。 - 其他配置保持默认。

- Database:填写SQLite数据库文件路径(如
3. 初始化表结构(可选)
若数据库无表,需先创建表。示例:创建 users 表。
- 使用 Inject 节点触发初始化:
CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT NOT NULL ) - 配置 Inject 节点的
msg.topic为上述SQL语句。 - 连接 Inject → SQLite 节点,部署后点击Inject按钮执行。

4. 增删改操作示例
插入数据(INSERT)
- Function 节点 构造插入语句和参数:
msg.topic = "INSERT INTO users (name, email) VALUES ($name, $email)"; msg.payload = ["alice", "alice@163.com"]; return msg; - 连接 Function → SQLite 节点。
- SQLite节点返回结果(如
lastID)。
- 也可用数据库管理工具连接上SQLite数据库文件,更能直观的查看结果。

更新数据(UPDATE)
- Function 节点 构造更新语句:
msg.topic = "UPDATE users SET email = $email WHERE name = $name"; msg.payload = ["new_email@1example.com", "alice"]; return msg; - SQLite节点返回影响的行数(
changes)。
删除数据(DELETE)
- Function 节点 构造删除语句:
msg.topic = "DELETE FROM users WHERE id = $id"; msg.payload = [1]; // 删除id为1的记录 return msg; - SQLite节点返回影响的行数。
5. 错误处理
- 添加 Catch 节点捕获SQLite节点的错误。
- 使用 Debug 节点查看输出结果(如
msg.payload)。
示例流程
[{"id":"b49ad3a8ddd23776","type":"tab","label":"sqlite","disabled":false,"info":"","env":[]},{"id":"1d6c75acfffa484b","type":"sqlite","z":"b49ad3a8ddd23776","mydb":"e976380597b4a77d","sqlquery":"msg.topic","sql":"","name":"连接数据库","x":410,"y":220,"wires":[["4d6c0f18aa1ec215"]]},{"id":"33655dac0fdde87f","type":"inject","z":"b49ad3a8ddd23776","name":"创建数据库表","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT NOT NULL )","payload":"","payloadType":"date","x":200,"y":220,"wires":[[]]},{"id":"4d6c0f18aa1ec215","type":"debug","z":"b49ad3a8ddd23776","name":"结果","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":610,"y":220,"wires":[]},{"id":"d9065c34530f7516","type":"inject","z":"b49ad3a8ddd23776","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":340,"wires":[["7006be5525f05b5c"]]},{"id":"7006be5525f05b5c","type":"function","z":"b49ad3a8ddd23776","name":"新增数据","func":"// 新增\nmsg.topic = \"INSERT INTO users (name, email) VALUES ($name, $email)\";\nmsg.payload = [\"alice\", \"alice@163.com\"];\nreturn msg;\n\n\n\n// // 更新\n// msg.topic = \"UPDATE users SET email = $email WHERE name = $name\";\n// msg.payload = [\"new_email@123.com\", \"alice\"];\n// return msg;\n\n\n\n// // 删除\n// msg.topic = \"DELETE FROM users WHERE id = $id\";\n// msg.payload = [1]; // 删除id为1的记录\n// return msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":380,"y":340,"wires":[["1d6c75acfffa484b"]]},{"id":"e976380597b4a77d","type":"sqlitedb","db":"./mydatabase.db","mode":"RWC"}]
关键点
- 参数化查询:使用
?占位符避免SQL注入。 - 结果处理:插入返回
lastID,更新/删除返回changes。 - 事务:如需事务,在单个SQLite节点中执行多条语句(用
BEGIN; ... COMMIT;)。
总结步骤:
- 安装sqlite节点。
- 创建或指定数据库文件。
- 配置sqlite节点,连接数据库。
- 创建表结构(如果不存在)。
- 构造增删改的SQL语句,通过注入消息触发,传递必要的参数。
- 处理可能的错误,检查输出。
通过上述步骤,即可在Node-RED中安全高效地操作SQLite数据库。
更多推荐

所有评论(0)