[{"data":1,"prerenderedAt":1221},["ShallowReactive",2],{"node-red-\u002Fnode-red\u002Fdatabase\u002Fsqlite":3},{"id":4,"title":5,"body":6,"description":1214,"extension":1215,"meta":1216,"navigation":524,"path":1217,"seo":1218,"stem":1219,"__hash__":1220},"nodeRed\u002Fnode-red\u002Fdatabase\u002Fsqlite.md","Using SQLite with Node-RED (2026 Updated)",{"type":7,"value":8,"toc":1206},"minimark",[9,17,21,26,31,34,62,66,137,141,144,179,190,194,197,200,205,215,284,289,300,305,310,345,349,358,361,368,378,383,438,443,632,641,645,648,666,670,697,741,753,757,770,1015,1036,1040,1058,1067,1075,1079,1116,1125,1133,1137,1177,1186,1194,1197,1202],[10,11,13],"h1",{"id":12},"",[14,15],"binding",{"value":16},"meta.title",[18,19,20],"p",{},"SQLite is a lightweight, self-contained database that does not require a server. It is ideal for quick setups, small applications, and IoT devices, as it stores data directly in files and is easy to manage.",[22,23,25],"h2",{"id":24},"getting-started","Getting Started",[27,28,30],"h3",{"id":29},"prerequisites","Prerequisites",[18,32,33],{},"Before you begin, make sure you have the following:",[35,36,37,49],"ul",{},[38,39,40,41,48],"li",{},"Ensure you have a running Node-RED instance. The quickest and easiest way to have a manageable and scalable Node-RED instance is by ",[42,43,47],"a",{"href":44,"rel":45},"https:\u002F\u002Fapp.flowfuse.com\u002F",[46],"nofollow","signing up on FlowFuse"," and creating an instance.",[38,50,51,52,56,57,61],{},"Install the ",[53,54,55],"code",{},"node-red-node-sqlite"," package using the ",[58,59,60],"strong",{},"Palette Manager",". This is the official Node-RED SQLite node maintained by the Node-RED team, ensuring reliability and compatibility.",[27,63,65],{"id":64},"configuring-sqlite-in-node-red","Configuring SQLite in Node-RED",[67,68,69,76,102,126],"ol",{},[38,70,71,72,75],{},"Drag the ",[58,73,74],{},"sqlite"," node onto the Node-RED canvas and double-click it.",[38,77,78,79,82,83,86,87],{},"In the ",[58,80,81],{},"Database"," field, click the ",[58,84,85],{},"+"," icon to add a new configuration. Enter the database name.\n",[35,88,89,95],{},[38,90,91,92],{},"Example: ",[53,93,94],{},"yourdbname",[38,96,97,98,101],{},"For a temporary database ",[53,99,100],{},"\u002Ftmp\u002Fyourdbname",".",[38,103,104,105,108,109],{},"Select the appropriate ",[58,106,107],{},"Mode\u002FPermissions",":\n",[35,110,111,116,121],{},[38,112,113],{},[58,114,115],{},"Read-Write-Create",[38,117,118],{},[58,119,120],{},"Read-Write",[38,122,123],{},[58,124,125],{},"Read-Only",[38,127,128,129,132,133,136],{},"Click ",[58,130,131],{},"Add",", then ",[58,134,135],{},"Done"," to save the configuration.",[27,138,140],{"id":139},"understanding-types-of-sql-queries-available","Understanding Types of SQL Queries Available",[18,142,143],{},"The SQLite node provides four options to specify the SQL query type:",[35,145,146,152,163,173],{},[38,147,148,151],{},[58,149,150],{},"Fixed Statement"," – A static SQL query defined directly in the node.",[38,153,154,160,161,101],{},[58,155,156,157],{},"Via ",[53,158,159],{},"msg.topic"," – Accepts the SQL query dynamically from the incoming message's ",[53,162,159],{},[38,164,165,168,169,172],{},[58,166,167],{},"Prepared Statement"," – Uses placeholders in the SQL query, with values supplied via ",[53,170,171],{},"msg.params"," for safer and reusable queries.",[38,174,175,178],{},[58,176,177],{},"Batch Without Response"," – Executes multiple queries in a batch without returning any results, useful for bulk inserts or updates.",[18,180,181,182,184,185,189],{},"Most users are familiar with ",[58,183,150],{}," and ",[58,186,156,187],{},[53,188,159],{},", so let us explore the other two options in more detail.",[191,192,167],"h4",{"id":193},"prepared-statement",[18,195,196],{},"Prepared statements let you safely insert values into queries without worrying about SQL injection. Instead of concatenating strings, you use placeholders and pass the actual values separately.",[18,198,199],{},"There are two ways to pass parameters:",[18,201,202],{},[58,203,204],{},"1. Using Named Parameters (Object)",[18,206,207,208,211,212,214],{},"Use ",[53,209,210],{},"$"," placeholders in your query and pass values as an object in ",[53,213,171],{},":",[216,217,221],"pre",{"className":218,"code":219,"language":220,"meta":12,"style":12},"language-javascript shiki shiki-themes github-light github-dark","\u002F\u002F Function node before sqlite\nmsg.params = {\n  $id: 1,\n  $name: \"John Doe\"\n}\nreturn msg;\n","javascript",[53,222,223,232,246,259,269,275],{"__ignoreMap":12},[224,225,228],"span",{"class":226,"line":227},"line",1,[224,229,231],{"class":230},"sJ8bj","\u002F\u002F Function node before sqlite\n",[224,233,235,239,243],{"class":226,"line":234},2,[224,236,238],{"class":237},"sVt8B","msg.params ",[224,240,242],{"class":241},"szBVR","=",[224,244,245],{"class":237}," {\n",[224,247,249,252,256],{"class":226,"line":248},3,[224,250,251],{"class":237},"  $id: ",[224,253,255],{"class":254},"sj4cs","1",[224,257,258],{"class":237},",\n",[224,260,262,265],{"class":226,"line":261},4,[224,263,264],{"class":237},"  $name: ",[224,266,268],{"class":267},"sZZnC","\"John Doe\"\n",[224,270,272],{"class":226,"line":271},5,[224,273,274],{"class":237},"}\n",[224,276,278,281],{"class":226,"line":277},6,[224,279,280],{"class":241},"return",[224,282,283],{"class":237}," msg;\n",[18,285,286],{},[58,287,288],{},"SQL Query:",[216,290,294],{"className":291,"code":292,"language":293,"meta":12,"style":12},"language-sql shiki shiki-themes github-light github-dark","INSERT INTO user_table (user_id, user) VALUES ($id, $name);\n","sql",[53,295,296],{"__ignoreMap":12},[224,297,298],{"class":226,"line":227},[224,299,292],{},[18,301,302],{},[58,303,304],{},"2. Using Positional Parameters (Array)",[18,306,307,308,101],{},"Use item-number placeholders ($1, $2, etc.) and pass the values as an array in ",[53,309,171],{},[216,311,313],{"className":218,"code":312,"language":220,"meta":12,"style":12},"\u002F\u002F Function node before sqlite\nmsg.params = [1, \"John Doe\"];\nreturn msg;\n",[53,314,315,319,339],{"__ignoreMap":12},[224,316,317],{"class":226,"line":227},[224,318,231],{"class":230},[224,320,321,323,325,328,330,333,336],{"class":226,"line":234},[224,322,238],{"class":237},[224,324,242],{"class":241},[224,326,327],{"class":237}," [",[224,329,255],{"class":254},[224,331,332],{"class":237},", ",[224,334,335],{"class":267},"\"John Doe\"",[224,337,338],{"class":237},"];\n",[224,340,341,343],{"class":226,"line":248},[224,342,280],{"class":241},[224,344,283],{"class":237},[18,346,347],{},[58,348,288],{},[216,350,352],{"className":291,"code":351,"language":293,"meta":12,"style":12},"INSERT INTO user_table (user_id, user) VALUES ($1, $2);\n",[53,353,354],{"__ignoreMap":12},[224,355,356],{"class":226,"line":227},[224,357,351],{},[191,359,177],{"id":360},"batch-without-response",[18,362,363,364,367],{},"Batch mode allows you to execute ",[58,365,366],{},"multiple SQL statements in a single operation"," without retrieving any results. This is ideal for bulk inserts, updates, deletes, or schema changes where you don't need data returned.",[18,369,370,371,374,375,377],{},"The SQL statements are ",[58,372,373],{},"dynamically generated in code"," and passed as a single string in ",[53,376,159],{},", with each statement separated by a semicolon.",[18,379,380],{},[58,381,382],{},"Example - Simple Batch:",[216,384,386],{"className":218,"code":385,"language":220,"meta":12,"style":12},"\u002F\u002F Function node before sqlite\n\u002F\u002F Generate multiple SQL statements\nmsg.topic = `\n    INSERT INTO user_table (user_id, user) VALUES (1, 'Alice');\n    INSERT INTO user_table (user_id, user) VALUES (2, 'Bob');\n    UPDATE user_table SET user = 'Alice Smith' WHERE user_id = 1;\n`;\nreturn msg;\n",[53,387,388,392,397,407,412,417,422,431],{"__ignoreMap":12},[224,389,390],{"class":226,"line":227},[224,391,231],{"class":230},[224,393,394],{"class":226,"line":234},[224,395,396],{"class":230},"\u002F\u002F Generate multiple SQL statements\n",[224,398,399,402,404],{"class":226,"line":248},[224,400,401],{"class":237},"msg.topic ",[224,403,242],{"class":241},[224,405,406],{"class":267}," `\n",[224,408,409],{"class":226,"line":261},[224,410,411],{"class":267},"    INSERT INTO user_table (user_id, user) VALUES (1, 'Alice');\n",[224,413,414],{"class":226,"line":271},[224,415,416],{"class":267},"    INSERT INTO user_table (user_id, user) VALUES (2, 'Bob');\n",[224,418,419],{"class":226,"line":277},[224,420,421],{"class":267},"    UPDATE user_table SET user = 'Alice Smith' WHERE user_id = 1;\n",[224,423,425,428],{"class":226,"line":424},7,[224,426,427],{"class":267},"`",[224,429,430],{"class":237},";\n",[224,432,434,436],{"class":226,"line":433},8,[224,435,280],{"class":241},[224,437,283],{"class":237},[18,439,440],{},[58,441,442],{},"Example - Programmatically Generated Batch:",[216,444,446],{"className":218,"code":445,"language":220,"meta":12,"style":12},"\u002F\u002F Function node before sqlite\n\u002F\u002F Build SQL from array of data\nconst users = [\n    { id: 1, name: 'Alice' },\n    { id: 2, name: 'Bob' },\n    { id: 3, name: 'Charlie' }\n];\n\n\u002F\u002F Generate INSERT statements dynamically\nconst inserts = users.map(u => \n    `INSERT INTO user_table (user_id, user) VALUES (${u.id}, '${u.name}');`\n).join('\\n');\n\nmsg.topic = inserts;\nreturn msg;\n",[53,447,448,452,457,471,487,501,516,520,526,532,562,588,610,615,625],{"__ignoreMap":12},[224,449,450],{"class":226,"line":227},[224,451,231],{"class":230},[224,453,454],{"class":226,"line":234},[224,455,456],{"class":230},"\u002F\u002F Build SQL from array of data\n",[224,458,459,462,465,468],{"class":226,"line":248},[224,460,461],{"class":241},"const",[224,463,464],{"class":254}," users",[224,466,467],{"class":241}," =",[224,469,470],{"class":237}," [\n",[224,472,473,476,478,481,484],{"class":226,"line":261},[224,474,475],{"class":237},"    { id: ",[224,477,255],{"class":254},[224,479,480],{"class":237},", name: ",[224,482,483],{"class":267},"'Alice'",[224,485,486],{"class":237}," },\n",[224,488,489,491,494,496,499],{"class":226,"line":271},[224,490,475],{"class":237},[224,492,493],{"class":254},"2",[224,495,480],{"class":237},[224,497,498],{"class":267},"'Bob'",[224,500,486],{"class":237},[224,502,503,505,508,510,513],{"class":226,"line":277},[224,504,475],{"class":237},[224,506,507],{"class":254},"3",[224,509,480],{"class":237},[224,511,512],{"class":267},"'Charlie'",[224,514,515],{"class":237}," }\n",[224,517,518],{"class":226,"line":424},[224,519,338],{"class":237},[224,521,522],{"class":226,"line":433},[224,523,525],{"emptyLinePlaceholder":524},true,"\n",[224,527,529],{"class":226,"line":528},9,[224,530,531],{"class":230},"\u002F\u002F Generate INSERT statements dynamically\n",[224,533,535,537,540,542,545,549,552,556,559],{"class":226,"line":534},10,[224,536,461],{"class":241},[224,538,539],{"class":254}," inserts",[224,541,467],{"class":241},[224,543,544],{"class":237}," users.",[224,546,548],{"class":547},"sScJk","map",[224,550,551],{"class":237},"(",[224,553,555],{"class":554},"s4XuR","u",[224,557,558],{"class":241}," =>",[224,560,561],{"class":237}," \n",[224,563,565,568,570,572,575,578,580,582,585],{"class":226,"line":564},11,[224,566,567],{"class":267},"    `INSERT INTO user_table (user_id, user) VALUES (${",[224,569,555],{"class":237},[224,571,101],{"class":267},[224,573,574],{"class":237},"id",[224,576,577],{"class":267},"}, '${",[224,579,555],{"class":237},[224,581,101],{"class":267},[224,583,584],{"class":237},"name",[224,586,587],{"class":267},"}');`\n",[224,589,591,594,597,599,602,605,607],{"class":226,"line":590},12,[224,592,593],{"class":237},").",[224,595,596],{"class":547},"join",[224,598,551],{"class":237},[224,600,601],{"class":267},"'",[224,603,604],{"class":254},"\\n",[224,606,601],{"class":267},[224,608,609],{"class":237},");\n",[224,611,613],{"class":226,"line":612},13,[224,614,525],{"emptyLinePlaceholder":524},[224,616,618,620,622],{"class":226,"line":617},14,[224,619,401],{"class":237},[224,621,242],{"class":241},[224,623,624],{"class":237}," inserts;\n",[224,626,628,630],{"class":226,"line":627},15,[224,629,280],{"class":241},[224,631,283],{"class":237},[633,634,635],"blockquote",{},[18,636,637,640],{},[58,638,639],{},"Note:"," If any of the values used to build batch SQL statements come from user input or external sources, always sanitize them or switch to prepared statements. Building SQL strings directly can expose your application to SQL injection vulnerabilities.",[27,642,644],{"id":643},"complete-crud-operations-example","Complete CRUD Operations Example",[18,646,647],{},"This section demonstrates a simple workflow for Create, Read, Update, and Delete operations using SQLite in Node-RED. Each operation will demonstrate a different SQL query type available in the SQLite node, giving you practical experience with all four methods: Fixed Statement, Via msg.topic, Prepared Statement, and Batch Without Response with important CRUD operations.",[633,649,650],{},[18,651,652,654,655,658,659,662,663,665],{},[58,653,639],{}," The following examples use a ",[53,656,657],{},"devices"," table instead of the ",[53,660,661],{},"user_table"," shown in the Prepared Statement and Batch examples above. This provides a more complete, real-world scenario for demonstrating CRUD operations. The importable flow at the end of this section includes all the necessary table creation and operations for the ",[53,664,657],{}," table.",[191,667,669],{"id":668},"create-table","Create Table",[67,671,672,679,684,687,694],{},[38,673,674,675,678],{},"Drag an ",[58,676,677],{},"inject"," node onto the canvas.",[38,680,71,681,683],{},[58,682,74],{}," node onto the canvas and double-click it.",[38,685,686],{},"Select the correct SQLite configuration from the database dropdown.",[38,688,689,690,693],{},"Choose ",[58,691,692],{},"fixed statement"," as the SQL query type.",[38,695,696],{},"Enter the following SQL in the query field:",[216,698,700],{"className":291,"code":699,"language":293,"meta":12,"style":12},"CREATE TABLE IF NOT EXISTS devices (\n    id INTEGER PRIMARY KEY AUTOINCREMENT,\n    device_id TEXT NOT NULL UNIQUE,\n    name TEXT,\n    status TEXT,\n    location TEXT,\n    last_seen DATETIME DEFAULT CURRENT_TIMESTAMP\n);\n",[53,701,702,707,712,717,722,727,732,737],{"__ignoreMap":12},[224,703,704],{"class":226,"line":227},[224,705,706],{},"CREATE TABLE IF NOT EXISTS devices (\n",[224,708,709],{"class":226,"line":234},[224,710,711],{},"    id INTEGER PRIMARY KEY AUTOINCREMENT,\n",[224,713,714],{"class":226,"line":248},[224,715,716],{},"    device_id TEXT NOT NULL UNIQUE,\n",[224,718,719],{"class":226,"line":261},[224,720,721],{},"    name TEXT,\n",[224,723,724],{"class":226,"line":271},[224,725,726],{},"    status TEXT,\n",[224,728,729],{"class":226,"line":277},[224,730,731],{},"    location TEXT,\n",[224,733,734],{"class":226,"line":424},[224,735,736],{},"    last_seen DATETIME DEFAULT CURRENT_TIMESTAMP\n",[224,738,739],{"class":226,"line":433},[224,740,609],{},[67,742,743,750],{"start":277},[38,744,745,746,749],{},"Add a ",[58,747,748],{},"debug"," node and connect all nodes.",[38,751,752],{},"Deploy the flow and click the inject button.",[191,754,756],{"id":755},"insert","Insert",[67,758,759,763],{},[38,760,674,761,678],{},[58,762,677],{},[38,764,765,766,769],{},"Drag a ",[58,767,768],{},"function"," node and add the following code:",[216,771,773],{"className":218,"code":772,"language":220,"meta":12,"style":12},"const devices = [\n    { id: 'DEV002', name: 'Pressure Sensor', status: 'offline', location: 'Factory Floor 2' },\n    { id: 'DEV003', name: 'Humidity Sensor', status: 'online', location: 'Warehouse 1' },\n    { id: 'DEV004', name: 'Vibration Sensor', status: 'online', location: 'Factory Floor 3' },\n    { id: 'DEV005', name: 'Flow Sensor', status: 'offline', location: 'Plant 1' },\n    { id: 'DEV006', name: 'Level Sensor', status: 'online', location: 'Tank 1' }\n];\n\nconst batchSQL = devices.map(d =>\n    `INSERT INTO devices (device_id, name, status, location) VALUES \n    ('${d.id}', '${d.name}', '${d.status}', '${d.location}');`\n).join('\\n');\n\nmsg.topic = batchSQL;\nreturn msg;\n",[53,774,775,786,812,836,859,882,905,909,913,935,940,980,996,1000,1009],{"__ignoreMap":12},[224,776,777,779,782,784],{"class":226,"line":227},[224,778,461],{"class":241},[224,780,781],{"class":254}," devices",[224,783,467],{"class":241},[224,785,470],{"class":237},[224,787,788,790,793,795,798,801,804,807,810],{"class":226,"line":234},[224,789,475],{"class":237},[224,791,792],{"class":267},"'DEV002'",[224,794,480],{"class":237},[224,796,797],{"class":267},"'Pressure Sensor'",[224,799,800],{"class":237},", status: ",[224,802,803],{"class":267},"'offline'",[224,805,806],{"class":237},", location: ",[224,808,809],{"class":267},"'Factory Floor 2'",[224,811,486],{"class":237},[224,813,814,816,819,821,824,826,829,831,834],{"class":226,"line":248},[224,815,475],{"class":237},[224,817,818],{"class":267},"'DEV003'",[224,820,480],{"class":237},[224,822,823],{"class":267},"'Humidity Sensor'",[224,825,800],{"class":237},[224,827,828],{"class":267},"'online'",[224,830,806],{"class":237},[224,832,833],{"class":267},"'Warehouse 1'",[224,835,486],{"class":237},[224,837,838,840,843,845,848,850,852,854,857],{"class":226,"line":261},[224,839,475],{"class":237},[224,841,842],{"class":267},"'DEV004'",[224,844,480],{"class":237},[224,846,847],{"class":267},"'Vibration Sensor'",[224,849,800],{"class":237},[224,851,828],{"class":267},[224,853,806],{"class":237},[224,855,856],{"class":267},"'Factory Floor 3'",[224,858,486],{"class":237},[224,860,861,863,866,868,871,873,875,877,880],{"class":226,"line":271},[224,862,475],{"class":237},[224,864,865],{"class":267},"'DEV005'",[224,867,480],{"class":237},[224,869,870],{"class":267},"'Flow Sensor'",[224,872,800],{"class":237},[224,874,803],{"class":267},[224,876,806],{"class":237},[224,878,879],{"class":267},"'Plant 1'",[224,881,486],{"class":237},[224,883,884,886,889,891,894,896,898,900,903],{"class":226,"line":277},[224,885,475],{"class":237},[224,887,888],{"class":267},"'DEV006'",[224,890,480],{"class":237},[224,892,893],{"class":267},"'Level Sensor'",[224,895,800],{"class":237},[224,897,828],{"class":267},[224,899,806],{"class":237},[224,901,902],{"class":267},"'Tank 1'",[224,904,515],{"class":237},[224,906,907],{"class":226,"line":424},[224,908,338],{"class":237},[224,910,911],{"class":226,"line":433},[224,912,525],{"emptyLinePlaceholder":524},[224,914,915,917,920,922,925,927,929,932],{"class":226,"line":528},[224,916,461],{"class":241},[224,918,919],{"class":254}," batchSQL",[224,921,467],{"class":241},[224,923,924],{"class":237}," devices.",[224,926,548],{"class":547},[224,928,551],{"class":237},[224,930,931],{"class":554},"d",[224,933,934],{"class":241}," =>\n",[224,936,937],{"class":226,"line":534},[224,938,939],{"class":267},"    `INSERT INTO devices (device_id, name, status, location) VALUES \n",[224,941,942,945,947,949,951,954,956,958,960,962,964,966,969,971,973,975,978],{"class":226,"line":564},[224,943,944],{"class":267},"    ('${",[224,946,931],{"class":237},[224,948,101],{"class":267},[224,950,574],{"class":237},[224,952,953],{"class":267},"}', '${",[224,955,931],{"class":237},[224,957,101],{"class":267},[224,959,584],{"class":237},[224,961,953],{"class":267},[224,963,931],{"class":237},[224,965,101],{"class":267},[224,967,968],{"class":237},"status",[224,970,953],{"class":267},[224,972,931],{"class":237},[224,974,101],{"class":267},[224,976,977],{"class":237},"location",[224,979,587],{"class":267},[224,981,982,984,986,988,990,992,994],{"class":226,"line":590},[224,983,593],{"class":237},[224,985,596],{"class":547},[224,987,551],{"class":237},[224,989,601],{"class":267},[224,991,604],{"class":254},[224,993,601],{"class":267},[224,995,609],{"class":237},[224,997,998],{"class":226,"line":612},[224,999,525],{"emptyLinePlaceholder":524},[224,1001,1002,1004,1006],{"class":226,"line":617},[224,1003,401],{"class":237},[224,1005,242],{"class":241},[224,1007,1008],{"class":237}," batchSQL;\n",[224,1010,1011,1013],{"class":226,"line":627},[224,1012,280],{"class":241},[224,1014,283],{"class":237},[67,1016,1017,1030,1034],{"start":248},[38,1018,71,1019,1021,1022],{},[58,1020,74],{}," node and configure it:\n",[35,1023,1024],{},[38,1025,1026,1027,693],{},"Select ",[58,1028,1029],{},"batch without response",[38,1031,745,1032,749],{},[58,1033,748],{},[38,1035,752],{},[191,1037,1039],{"id":1038},"read","Read",[67,1041,1042,1046,1050,1052,1056],{},[38,1043,674,1044,678],{},[58,1045,677],{},[38,1047,71,1048,683],{},[58,1049,74],{},[38,1051,686],{},[38,1053,689,1054,693],{},[58,1055,692],{},[38,1057,696],{},[216,1059,1061],{"className":291,"code":1060,"language":293,"meta":12,"style":12},"SELECT * FROM devices;\n",[53,1062,1063],{"__ignoreMap":12},[224,1064,1065],{"class":226,"line":227},[224,1066,1060],{},[67,1068,1069,1073],{"start":277},[38,1070,745,1071,749],{},[58,1072,748],{},[38,1074,752],{},[191,1076,1078],{"id":1077},"update","Update",[67,1080,1081,1085,1102],{},[38,1082,674,1083,678],{},[58,1084,677],{},[38,1086,765,1087,1021,1090],{},[58,1088,1089],{},"change",[35,1091,1092],{},[38,1093,1094,1095,1097,1098,1101],{},"Set ",[53,1096,171],{}," to ",[53,1099,1100],{},"[\"offline\", \"DEV002\"]"," (type: JSON)",[38,1103,71,1104,1021,1106],{},[58,1105,74],{},[35,1107,1108,1113],{},[38,1109,1026,1110,693],{},[58,1111,1112],{},"prepared statement",[38,1114,1115],{},"Enter the SQL query:",[216,1117,1119],{"className":291,"code":1118,"language":293,"meta":12,"style":12},"UPDATE devices SET status = $1 WHERE device_id = $2;\n",[53,1120,1121],{"__ignoreMap":12},[224,1122,1123],{"class":226,"line":227},[224,1124,1118],{},[67,1126,1127,1131],{"start":261},[38,1128,745,1129,749],{},[58,1130,748],{},[38,1132,752],{},[191,1134,1136],{"id":1135},"delete","Delete",[67,1138,1139,1143,1165],{},[38,1140,674,1141,678],{},[58,1142,677],{},[38,1144,765,1145,1021,1147],{},[58,1146,1089],{},[35,1148,1149,1156],{},[38,1150,1094,1151,1097,1153,1101],{},[53,1152,171],{},[53,1154,1155],{},"{}",[38,1157,1094,1158,1097,1161,1164],{},[53,1159,1160],{},"msg.params.$device_id",[53,1162,1163],{},"DEV006"," (type: string)",[38,1166,71,1167,1021,1169],{},[58,1168,74],{},[35,1170,1171,1175],{},[38,1172,1026,1173,693],{},[58,1174,1112],{},[38,1176,1115],{},[216,1178,1180],{"className":291,"code":1179,"language":293,"meta":12,"style":12},"DELETE FROM devices WHERE device_id = $id;\n",[53,1181,1182],{"__ignoreMap":12},[224,1183,1184],{"class":226,"line":227},[224,1185,1179],{},[67,1187,1188,1192],{"start":261},[38,1189,745,1190,749],{},[58,1191,748],{},[38,1193,752],{},[18,1195,1196],{},"Below is the complete flow created throughout this guide. You can import it into Node-RED and experiment with it.",[1198,1199],"render-flow",{":height":1200,"flow":1201},"200","W3siaWQiOiI3Mzk3ZDM2MzZiZjllZWM5IiwidHlwZSI6Imdyb3VwIiwieiI6IjljZjgyYjY4YmI4OWU4Y2UiLCJuYW1lIjoiQ3JlYXRlIFRhYmxlICggZml4ZWQgc3RhdGVtZW50ICkiLCJzdHlsZSI6eyJsYWJlbCI6dHJ1ZX0sIm5vZGVzIjpbIjg0M2M2YmRkZDFmYTg4ZGQiLCJjNzEzNGYzMDU0Nzc1ZWQ5IiwiNDYyYTA2NDNmNWY4NWE4NSJdLCJ4IjoxMDM0LCJ5Ijo0NDU5LCJ3Ijo3MzIsImgiOjgyfSx7ImlkIjoiODQzYzZiZGRkMWZhODhkZCIsInR5cGUiOiJpbmplY3QiLCJ6IjoiOWNmODJiNjhiYjg5ZThjZSIsImciOiI3Mzk3ZDM2MzZiZjllZWM5IiwibmFtZSI6IiIsInByb3BzIjpbeyJwIjoicGF5bG9hZCJ9LHsicCI6InRvcGljIiwidnQiOiJzdHIifV0sInJlcGVhdCI6IiIsImNyb250YWIiOiIiLCJvbmNlIjpmYWxzZSwib25jZURlbGF5IjowLjEsInRvcGljIjoiIiwicGF5bG9hZCI6IiIsInBheWxvYWRUeXBlIjoiZGF0ZSIsIngiOjExNDAsInkiOjQ1MDAsIndpcmVzIjpbWyJjNzEzNGYzMDU0Nzc1ZWQ5Il1dfSx7ImlkIjoiYzcxMzRmMzA1NDc3NWVkOSIsInR5cGUiOiJzcWxpdGUiLCJ6IjoiOWNmODJiNjhiYjg5ZThjZSIsImciOiI3Mzk3ZDM2MzZiZjllZWM5IiwibXlkYiI6ImM5MTEzOWQ0MTE1MDc5NzEiLCJzcWxxdWVyeSI6ImZpeGVkIiwic3FsIjoiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgZGV2aWNlcyAoXG4gICAgaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULFxuICAgIGRldmljZV9pZCBURVhUIE5PVCBOVUxMIFVOSVFVRSxcbiAgICBuYW1lIFRFWFQsXG4gICAgc3RhdHVzIFRFWFQsXG4gICAgbG9jYXRpb24gVEVYVCxcbiAgICBsYXN0X3NlZW4gREFURVRJTUUgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUFxuKTtcbiIsIm5hbWUiOiJDcmVhdGUgVGFibGUiLCJ4IjoxNDkwLCJ5Ijo0NTAwLCJ3aXJlcyI6W1siNDYyYTA2NDNmNWY4NWE4NSJdXX0seyJpZCI6IjQ2MmEwNjQzZjVmODVhODUiLCJ0eXBlIjoiZGVidWciLCJ6IjoiOWNmODJiNjhiYjg5ZThjZSIsImciOiI3Mzk3ZDM2MzZiZjllZWM5IiwibmFtZSI6ImRlYnVnIDEiLCJhY3RpdmUiOnRydWUsInRvc2lkZWJhciI6dHJ1ZSwiY29uc29sZSI6ZmFsc2UsInRvc3RhdHVzIjpmYWxzZSwiY29tcGxldGUiOiJmYWxzZSIsInN0YXR1c1ZhbCI6IiIsInN0YXR1c1R5cGUiOiJhdXRvIiwieCI6MTY2MCwieSI6NDUwMCwid2lyZXMiOltdfSx7ImlkIjoiYzkxMTM5ZDQxMTUwNzk3MSIsInR5cGUiOiJzcWxpdGVkYiIsImRiIjoiL3RtcC9zcWxpdGUiLCJtb2RlIjoiUldDIn0seyJpZCI6IjE5MWYwNjk0MjJkMGY5YjQiLCJ0eXBlIjoiZ3JvdXAiLCJ6IjoiOWNmODJiNjhiYjg5ZThjZSIsIm5hbWUiOiJSZWFkIFJlY29yZHMiLCJzdHlsZSI6eyJsYWJlbCI6dHJ1ZX0sIm5vZGVzIjpbImYxNDUyNzY0OTVlNmE3YmQiLCJiNmU2MWVjYjAzNzliOTNiIiwiMDJjNzcyMzEwMzM5MTgyNSJdLCJ4IjoxMDM0LCJ5Ijo0NTU5LCJ3Ijo3MzIsImgiOjgyfSx7ImlkIjoiZjE0NTI3NjQ5NWU2YTdiZCIsInR5cGUiOiJpbmplY3QiLCJ6IjoiOWNmODJiNjhiYjg5ZThjZSIsImciOiIxOTFmMDY5NDIyZDBmOWI0IiwibmFtZSI6IiIsInByb3BzIjpbeyJwIjoicGF5bG9hZCJ9LHsicCI6InRvcGljIiwidnQiOiJzdHIifV0sInJlcGVhdCI6IiIsImNyb250YWIiOiIiLCJvbmNlIjpmYWxzZSwib25jZURlbGF5IjowLjEsInRvcGljIjoiIiwicGF5bG9hZCI6IiIsInBheWxvYWRUeXBlIjoiZGF0ZSIsIngiOjExNDAsInkiOjQ2MDAsIndpcmVzIjpbWyJiNmU2MWVjYjAzNzliOTNiIl1dfSx7ImlkIjoiYjZlNjFlY2IwMzc5YjkzYiIsInR5cGUiOiJzcWxpdGUiLCJ6IjoiOWNmODJiNjhiYjg5ZThjZSIsImciOiIxOTFmMDY5NDIyZDBmOWI0IiwibXlkYiI6ImM5MTEzOWQ0MTE1MDc5NzEiLCJzcWxxdWVyeSI6ImZpeGVkIiwic3FsIjoiU0VMRUNUICogRlJPTSBkZXZpY2VzO1xuIiwibmFtZSI6IlJlYWQiLCJ4IjoxNDcwLCJ5Ijo0NjAwLCJ3aXJlcyI6W1siMDJjNzcyMzEwMzM5MTgyNSJdXX0seyJpZCI6IjAyYzc3MjMxMDMzOTE4MjUiLCJ0eXBlIjoiZGVidWciLCJ6IjoiOWNmODJiNjhiYjg5ZThjZSIsImciOiIxOTFmMDY5NDIyZDBmOWI0IiwibmFtZSI6ImRlYnVnIDMiLCJhY3RpdmUiOnRydWUsInRvc2lkZWJhciI6dHJ1ZSwiY29uc29sZSI6ZmFsc2UsInRvc3RhdHVzIjpmYWxzZSwiY29tcGxldGUiOiJmYWxzZSIsInN0YXR1c1ZhbCI6IiIsInN0YXR1c1R5cGUiOiJhdXRvIiwieCI6MTY2MCwieSI6NDYwMCwid2lyZXMiOltdfSx7ImlkIjoiYzliZjhjMjFhNzNjZjRmMSIsInR5cGUiOiJncm91cCIsInoiOiI5Y2Y4MmI2OGJiODllOGNlIiwibmFtZSI6IkJhdGNoIHdpdGhvdXQgcmVzcG9uc2UiLCJzdHlsZSI6eyJsYWJlbCI6dHJ1ZX0sIm5vZGVzIjpbImQ4ZDJmZDhmZjRkYTY0ZmUiLCI3ZDc1NTZhYTI3ZmE2Y2E4IiwiZDE1YTY0ZGFlZDMyMjE1OCIsImVhNTkyMGI2NDM2MmU0MTIiXSwieCI6MTAzNCwieSI6NDY1OSwidyI6NzMyLCJoIjo4Mn0seyJpZCI6ImQ4ZDJmZDhmZjRkYTY0ZmUiLCJ0eXBlIjoiaW5qZWN0IiwieiI6IjljZjgyYjY4YmI4OWU4Y2UiLCJnIjoiYzliZjhjMjFhNzNjZjRmMSIsIm5hbWUiOiIiLCJwcm9wcyI6W3sicCI6InBheWxvYWQifSx7InAiOiJ0b3BpYyIsInZ0Ijoic3RyIn1dLCJyZXBlYXQiOiIiLCJjcm9udGFiIjoiIiwib25jZSI6ZmFsc2UsIm9uY2VEZWxheSI6MC4xLCJ0b3BpYyI6IiIsInBheWxvYWQiOiIiLCJwYXlsb2FkVHlwZSI6ImRhdGUiLCJ4IjoxMTQwLCJ5Ijo0NzAwLCJ3aXJlcyI6W1siZWE1OTIwYjY0MzYyZTQxMiJdXX0seyJpZCI6IjdkNzU1NmFhMjdmYTZjYTgiLCJ0eXBlIjoic3FsaXRlIiwieiI6IjljZjgyYjY4YmI4OWU4Y2UiLCJnIjoiYzliZjhjMjFhNzNjZjRmMSIsIm15ZGIiOiJjOTExMzlkNDExNTA3OTcxIiwic3FscXVlcnkiOiJiYXRjaCIsInNxbCI6IklOU0VSVCBJTlRPIGRldmljZXMgKGRldmljZV9pZCwgbmFtZSwgc3RhdHVzLCBsb2NhdGlvbilcblZBTFVFUyAoJGlkLCAkbmFtZSwgJHN0YXR1cywgJGxvY2F0aW9uKTsiLCJuYW1lIjoiSW5zZXJ0IiwieCI6MTQ3MCwieSI6NDcwMCwid2lyZXMiOltbImQxNWE2NGRhZWQzMjIxNTgiXV19LHsiaWQiOiJkMTVhNjRkYWVkMzIyMTU4IiwidHlwZSI6ImRlYnVnIiwieiI6IjljZjgyYjY4YmI4OWU4Y2UiLCJnIjoiYzliZjhjMjFhNzNjZjRmMSIsIm5hbWUiOiJkZWJ1ZyAyIiwiYWN0aXZlIjp0cnVlLCJ0b3NpZGViYXIiOnRydWUsImNvbnNvbGUiOmZhbHNlLCJ0b3N0YXR1cyI6ZmFsc2UsImNvbXBsZXRlIjoiZmFsc2UiLCJzdGF0dXNWYWwiOiIiLCJzdGF0dXNUeXBlIjoiYXV0byIsIngiOjE2NjAsInkiOjQ3MDAsIndpcmVzIjpbXX0seyJpZCI6ImVhNTkyMGI2NDM2MmU0MTIiLCJ0eXBlIjoiZnVuY3Rpb24iLCJ6IjoiOWNmODJiNjhiYjg5ZThjZSIsImciOiJjOWJmOGMyMWE3M2NmNGYxIiwibmFtZSI6IkJhdGNoIEluc2VydCIsImZ1bmMiOiIvLyBTYW1wbGUgMTAgZGV2aWNlc1xuY29uc3QgZGV2aWNlcyA9IFtcbiAgICB7IGlkOiAnREVWMDAyJywgbmFtZTogJ1ByZXNzdXJlIFNlbnNvcicsIHN0YXR1czogJ29mZmxpbmUnLCBsb2NhdGlvbjogJ0ZhY3RvcnkgRmxvb3IgMicgfSxcbiAgICB7IGlkOiAnREVWMDAzJywgbmFtZTogJ0h1bWlkaXR5IFNlbnNvcicsIHN0YXR1czogJ29ubGluZScsIGxvY2F0aW9uOiAnV2FyZWhvdXNlIDEnIH0sXG4gICAgeyBpZDogJ0RFVjAwNCcsIG5hbWU6ICdWaWJyYXRpb24gU2Vuc29yJywgc3RhdHVzOiAnb25saW5lJywgbG9jYXRpb246ICdGYWN0b3J5IEZsb29yIDMnIH0sXG4gICAgeyBpZDogJ0RFVjAwNScsIG5hbWU6ICdGbG93IFNlbnNvcicsIHN0YXR1czogJ29mZmxpbmUnLCBsb2NhdGlvbjogJ1BsYW50IDEnIH0sXG4gICAgeyBpZDogJ0RFVjAwNicsIG5hbWU6ICdMZXZlbCBTZW5zb3InLCBzdGF0dXM6ICdvbmxpbmUnLCBsb2NhdGlvbjogJ1RhbmsgMScgfSxcbiAgICB7IGlkOiAnREVWMDA3JywgbmFtZTogJ1ByZXNzdXJlIEdhdWdlJywgc3RhdHVzOiAnb25saW5lJywgbG9jYXRpb246ICdQbGFudCAyJyB9LFxuICAgIHsgaWQ6ICdERVYwMDgnLCBuYW1lOiAnVGVtcGVyYXR1cmUgU2Vuc29yIDInLCBzdGF0dXM6ICdvZmZsaW5lJywgbG9jYXRpb246ICdXYXJlaG91c2UgMicgfSxcbiAgICB7IGlkOiAnREVWMDA5JywgbmFtZTogJ0h1bWlkaXR5IFNlbnNvciAyJywgc3RhdHVzOiAnb25saW5lJywgbG9jYXRpb246ICdQbGFudCAzJyB9LFxuICAgIHsgaWQ6ICdERVYwMTAnLCBuYW1lOiAnRmxvdyBNZXRlcicsIHN0YXR1czogJ29ubGluZScsIGxvY2F0aW9uOiAnRmFjdG9yeSBGbG9vciA0JyB9XG5dO1xuXG4vLyBHZW5lcmF0ZSBiYXRjaCBTUUxcbmNvbnN0IGJhdGNoU1FMID0gZGV2aWNlcy5tYXAoZCA9PlxuICAgIGBJTlNFUlQgSU5UTyBkZXZpY2VzIChkZXZpY2VfaWQsIG5hbWUsIHN0YXR1cywgbG9jYXRpb24pIFZBTFVFUyBcbiAgICAoJyR7ZC5pZH0nLCAnJHtkLm5hbWV9JywgJyR7ZC5zdGF0dXN9JywgJyR7ZC5sb2NhdGlvbn0nKTtgXG4pLmpvaW4oJ1xcbicpO1xuXG5tc2cudG9waWMgPSBiYXRjaFNRTDtcbnJldHVybiBtc2c7XG4iLCJvdXRwdXRzIjoxLCJ0aW1lb3V0IjowLCJub2VyciI6MCwiaW5pdGlhbGl6ZSI6IiIsImZpbmFsaXplIjoiIiwibGlicyI6W10sIngiOjEzMTAsInkiOjQ3MDAsIndpcmVzIjpbWyI3ZDc1NTZhYTI3ZmE2Y2E4Il1dfSx7ImlkIjoiZTE5OWQzNTQwNjYwOTQ3MSIsInR5cGUiOiJncm91cCIsInoiOiI5Y2Y4MmI2OGJiODllOGNlIiwibmFtZSI6IlVwZGF0ZSBSZWNvcmQgKCB2aWEgcHJlcGFyZWQgc3RhdGVtZW50IHdpdGggYXJyYXkgKSIsInN0eWxlIjp7ImxhYmVsIjp0cnVlfSwibm9kZXMiOlsiOTY4ODI3OGMyOTg5NWFiMCIsImVhNzFmYmMzZWY1Y2M4YmQiLCI5MjA4ZTZlZjMwMjE4ZTM1IiwiMWFkNWM4MWQ5MjVhMDMxMCJdLCJ4IjoxMDM0LCJ5Ijo0NzU5LCJ3Ijo3MzIsImgiOjgyfSx7ImlkIjoiOTY4ODI3OGMyOTg5NWFiMCIsInR5cGUiOiJpbmplY3QiLCJ6IjoiOWNmODJiNjhiYjg5ZThjZSIsImciOiJlMTk5ZDM1NDA2NjA5NDcxIiwibmFtZSI6IiIsInByb3BzIjpbeyJwIjoicGF5bG9hZCJ9LHsicCI6InRvcGljIiwidnQiOiJzdHIifV0sInJlcGVhdCI6IiIsImNyb250YWIiOiIiLCJvbmNlIjpmYWxzZSwib25jZURlbGF5IjowLjEsInRvcGljIjoiIiwicGF5bG9hZCI6IiIsInBheWxvYWRUeXBlIjoiZGF0ZSIsIngiOjExNDAsInkiOjQ4MDAsIndpcmVzIjpbWyI5MjA4ZTZlZjMwMjE4ZTM1Il1dfSx7ImlkIjoiZWE3MWZiYzNlZjVjYzhiZCIsInR5cGUiOiJzcWxpdGUiLCJ6IjoiOWNmODJiNjhiYjg5ZThjZSIsImciOiJlMTk5ZDM1NDA2NjA5NDcxIiwibXlkYiI6ImM5MTEzOWQ0MTE1MDc5NzEiLCJzcWxxdWVyeSI6InByZXBhcmVkIiwic3FsIjoiVVBEQVRFIGRldmljZXMgU0VUIHN0YXR1cyA9ICQxIFdIRVJFIGRldmljZV9pZCA9ICQyOyIsIm5hbWUiOiJVcGRhdGUiLCJ4IjoxNDgwLCJ5Ijo0ODAwLCJ3aXJlcyI6W1siMWFkNWM4MWQ5MjVhMDMxMCJdXX0seyJpZCI6IjkyMDhlNmVmMzAyMThlMzUiLCJ0eXBlIjoiY2hhbmdlIiwieiI6IjljZjgyYjY4YmI4OWU4Y2UiLCJnIjoiZTE5OWQzNTQwNjYwOTQ3MSIsIm5hbWUiOiJTZXQgUGFyYW1zIiwicnVsZXMiOlt7InQiOiJzZXQiLCJwIjoicGFyYW1zIiwicHQiOiJtc2ciLCJ0byI6IltcIm9mZmxpbmVcIiwgXCJERVYwMDJcIl0iLCJ0b3QiOiJqc29uIn1dLCJhY3Rpb24iOiIiLCJwcm9wZXJ0eSI6IiIsImZyb20iOiIiLCJ0byI6IiIsInJlZyI6ZmFsc2UsIngiOjEzMTAsInkiOjQ4MDAsIndpcmVzIjpbWyJlYTcxZmJjM2VmNWNjOGJkIl1dfSx7ImlkIjoiMWFkNWM4MWQ5MjVhMDMxMCIsInR5cGUiOiJkZWJ1ZyIsInoiOiI5Y2Y4MmI2OGJiODllOGNlIiwiZyI6ImUxOTlkMzU0MDY2MDk0NzEiLCJuYW1lIjoiZGVidWcgNCIsImFjdGl2ZSI6dHJ1ZSwidG9zaWRlYmFyIjp0cnVlLCJjb25zb2xlIjpmYWxzZSwidG9zdGF0dXMiOmZhbHNlLCJjb21wbGV0ZSI6ImZhbHNlIiwic3RhdHVzVmFsIjoiIiwic3RhdHVzVHlwZSI6ImF1dG8iLCJ4IjoxNjYwLCJ5Ijo0ODAwLCJ3aXJlcyI6W119LHsiaWQiOiI2NzA4NWQ5ZmE5YjdiNWRkIiwidHlwZSI6Imdyb3VwIiwieiI6IjljZjgyYjY4YmI4OWU4Y2UiLCJuYW1lIjoiRGVsZXRlIFJlY29yZCAoIHZpYSBwcmVwYXJlZCBzdGF0ZW1lbnQgd2l0aCBvYmplY3QgKSIsInN0eWxlIjp7ImxhYmVsIjp0cnVlfSwibm9kZXMiOlsiYzU1MWE0OTdiZjc3NmMxNSIsIjE3NjdjZDk5ZTNiMDNiZDIiLCJiMzU3MDI1MDAxM2M4NzAzIiwiOWVjNTM2YTM5ZTA1NWZmZSJdLCJ4IjoxMDM0LCJ5Ijo0ODU5LCJ3Ijo3MzIsImgiOjgyfSx7ImlkIjoiYzU1MWE0OTdiZjc3NmMxNSIsInR5cGUiOiJpbmplY3QiLCJ6IjoiOWNmODJiNjhiYjg5ZThjZSIsImciOiI2NzA4NWQ5ZmE5YjdiNWRkIiwibmFtZSI6IiIsInByb3BzIjpbeyJwIjoicGF5bG9hZCJ9LHsicCI6InRvcGljIiwidnQiOiJzdHIifV0sInJlcGVhdCI6IiIsImNyb250YWIiOiIiLCJvbmNlIjpmYWxzZSwib25jZURlbGF5IjowLjEsInRvcGljIjoiIiwicGF5bG9hZCI6IiIsInBheWxvYWRUeXBlIjoiZGF0ZSIsIngiOjExNDAsInkiOjQ5MDAsIndpcmVzIjpbWyJiMzU3MDI1MDAxM2M4NzAzIl1dfSx7ImlkIjoiMTc2N2NkOTllM2IwM2JkMiIsInR5cGUiOiJzcWxpdGUiLCJ6IjoiOWNmODJiNjhiYjg5ZThjZSIsImciOiI2NzA4NWQ5ZmE5YjdiNWRkIiwibXlkYiI6ImM5MTEzOWQ0MTE1MDc5NzEiLCJzcWxxdWVyeSI6InByZXBhcmVkIiwic3FsIjoiREVMRVRFIEZST00gZGV2aWNlcyBXSEVSRSBkZXZpY2VfaWQgPSAkZGV2aWNlX2lkOyIsIm5hbWUiOiJEZWxldGUiLCJ4IjoxNDcwLCJ5Ijo0OTAwLCJ3aXJlcyI6W1siOWVjNTM2YTM5ZTA1NWZmZSJdXX0seyJpZCI6ImIzNTcwMjUwMDEzYzg3MDMiLCJ0eXBlIjoiY2hhbmdlIiwieiI6IjljZjgyYjY4YmI4OWU4Y2UiLCJnIjoiNjcwODVkOWZhOWI3YjVkZCIsIm5hbWUiOiJTZXQgUGFyYW1zIiwicnVsZXMiOlt7InQiOiJzZXQiLCJwIjoicGFyYW1zIiwicHQiOiJtc2ciLCJ0byI6Int9IiwidG90IjoianNvbiJ9LHsidCI6InNldCIsInAiOiJwYXJhbXMuJGRldmljZV9pZCIsInB0IjoibXNnIiwidG8iOiJERVYwMDYiLCJ0b3QiOiJzdHIifV0sImFjdGlvbiI6IiIsInByb3BlcnR5IjoiIiwiZnJvbSI6IiIsInRvIjoiIiwicmVnIjpmYWxzZSwieCI6MTMxMCwieSI6NDkwMCwid2lyZXMiOltbIjE3NjdjZDk5ZTNiMDNiZDIiXV19LHsiaWQiOiI5ZWM1MzZhMzllMDU1ZmZlIiwidHlwZSI6ImRlYnVnIiwieiI6IjljZjgyYjY4YmI4OWU4Y2UiLCJnIjoiNjcwODVkOWZhOWI3YjVkZCIsIm5hbWUiOiJkZWJ1ZyA1IiwiYWN0aXZlIjp0cnVlLCJ0b3NpZGViYXIiOnRydWUsImNvbnNvbGUiOmZhbHNlLCJ0b3N0YXR1cyI6ZmFsc2UsImNvbXBsZXRlIjoiZmFsc2UiLCJzdGF0dXNWYWwiOiIiLCJzdGF0dXNUeXBlIjoiYXV0byIsIngiOjE2NjAsInkiOjQ5MDAsIndpcmVzIjpbXX0seyJpZCI6IjRjNDY0OTY0MzkxZTFjMWMiLCJ0eXBlIjoiZ2xvYmFsLWNvbmZpZyIsImVudiI6W10sIm1vZHVsZXMiOnsibm9kZS1yZWQtbm9kZS1zcWxpdGUiOiIxLjEuMSJ9fV0=",[1203,1204,1205],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":12,"searchDepth":234,"depth":234,"links":1207},[1208],{"id":24,"depth":234,"text":25,"children":1209},[1210,1211,1212,1213],{"id":29,"depth":248,"text":30},{"id":64,"depth":248,"text":65},{"id":139,"depth":248,"text":140},{"id":643,"depth":248,"text":644},"Learn how to seamlessly integrate SQLite with Node-RED for efficient data management and application development.","md",{},"\u002Fnode-red\u002Fdatabase\u002Fsqlite",{"title":5,"description":1214},"node-red\u002Fdatabase\u002Fsqlite","yA1HzeZ_UzXZGIZuhJ4T2ScLulVIXmFsRhLBrbPIzf8",1780070556701]