Usar SQLite no reComputer
Introdução

Este wiki explica como usar o SQlite no reComputer box. SQLite é um sistema de gerenciamento de banco de dados relacional incorporado e leve, amplamente utilizado em dispositivos móveis, aplicativos de desktop e sistemas embarcados. Ele não requer um processo de servidor separado; o banco de dados é armazenado diretamente em um único arquivo comum em disco. SQLite é simples de usar e oferece excelente desempenho. Ele suporta a sintaxe SQL padrão e é adequado para necessidades de armazenamento de dados de pequeno a médio porte. Devido aos seus recursos de zero configuração e fácil implantação, o SQLite se tornou o mecanismo de banco de dados preferido para muitos projetos.
Preparar hardware
| reComputer R1125 | reComputer AI R2130 | reComputer AI Industrial R2145 |
|---|---|---|
![]() | ![]() | ![]() |
| reComputer Industrial R20xx | reComputer Industrial R21xx |
|---|---|
![]() | ![]() |
Preparar software
Atualizar o sistema
sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
sudo apt update
sudo apt full-upgrade
Instalar SQlite
sudo apt-get install sqlite3

Criar banco de dados
sqlite3 sensordata.db
Com o comando .help você pode ser rapidamente lembrado de todos os comandos suportados e de seu respectivo uso.
sqlite> .help

Em seguida, use .quit para sair do shell do SQlite.
sqlite> .quit
Usando SQL
Criar tabela em SQL
sqlite3 sensordata.db
Em seguida, use um comando como abaixo para criar uma nova tabela.
ain@raspberrypi:~ $ sqlite3 sensordata.db
SQLite version 3.40.1 2022-12-28 14:03:47
Enter ".help" for usage hints.
sqlite> BEGIN;
sqlite> CREATE TABLE dhtreadings (
...> id INTEGER PRIMARY KEY AUTOINCREMENT,
...> temperature NUMERIC,
...> humidity NUMERIC,
...> currentdate DATE,
...> currenttime TIME,
...> device TEXT
...> );
sqlite> COMMIT;
Verificar a tabela
Você pode usar o seguinte comando para visualizar a tabela criada.
sqlite> .tables
dhtreadings
sqlite> .fullschema
CREATE TABLE dhtreadings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
temperature NUMERIC,
humidity NUMERIC,
currentdate DATE,
currenttime TIME,
device TEXT
);
/* No STAT tables available */
Inserir em SQL
Para inserir novas leituras de temperatura e umidade no banco de dados, você pode fazer algo como isto:
sqlite> BEGIN;
sqlite> INSERT INTO dhtreadings(temperature, humidity, currentdate, currenttime, device) values(22.4, 48, date('now'), time('now'), "manual");
sqlite> COMMIT;
Selecionar em SQL
Para acessar os dados armazenados no banco de dados, você usa a instrução SQL SELECT:
sqlite> SELECT * FROM dhtreadings;
1|22.4|48|2025-09-26|01:23:37|manual
Até agora, você tem apenas 1 leitura inserida no banco de dados. Você pode inserir uma nova leitura da seguinte forma:
sqlite> BEGIN;
sqlite> INSERT INTO dhtreadings(temperature, humidity, currentdate, currenttime, device) values(22.5, 48.7, date('now'), time('now'), "manual");
sqlite> COMMIT;
E quando você usa SELECT para os dados armazenados na tabela, ele retorna 2 leituras:
sqlite> SELECT * FROM dhtreadings;
1|22.4|48|2025-09-26|01:23:37|manual
2|22.5|48.7|2025-09-26|02:06:35|manual
Remover em SQL
Se você quiser excluir completamente a tabela do seu banco de dados, pode usar o comando DROP TABLE.
NOTE: o próximo comando excluirá completamente a tabela dhtreadings:
sqlite> DROP TABLE dhtreadings;
Agora, se você digitar o comando ‘.tables‘:
sqlite> .tables
Ele não retorna nada, porque sua tabela foi completamente excluída.
Usar Python com SQLite
Usar Python para interagir com SQLite como abaixo:
test_sqlite.py
import sqlite3
from datetime import datetime
import os
def create_connection(db_file="dht_readings.db"):
"""Create a database connection to the SQLite database"""
conn = None
try:
conn = sqlite3.connect(db_file)
print(f"Connected to SQLite database: {db_file}")
except sqlite3.Error as e:
print(f"Error connecting to database: {e}")
return conn
def create_table(conn):
"""Create the dhtreadings table if it doesn't exist"""
try:
sql_create_dhtreadings_table = """
CREATE TABLE IF NOT EXISTS dhtreadings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
temperature REAL NOT NULL,
humidity REAL NOT NULL,
currentdate TEXT NOT NULL,
currenttime TEXT NOT NULL,
device TEXT NOT NULL
);
"""
conn.cursor().execute(sql_create_dhtreadings_table)
conn.commit()
print("DHT readings table created successfully")
except sqlite3.Error as e:
print(f"Error creating table: {e}")
def insert_dht_reading(conn, temperature, humidity, device):
"""Insert a new DHT reading into the dhtreadings table"""
sql_insert = """INSERT INTO dhtreadings(temperature, humidity, currentdate, currenttime, device)
VALUES(?, ?, date('now'), time('now'), ?);"""
try:
cursor = conn.cursor()
cursor.execute(sql_insert, (temperature, humidity, device))
conn.commit()
print(f"New record created successfully with ID: {cursor.lastrowid}")
return cursor.lastrowid
except sqlite3.Error as e:
print(f"Error inserting data: {e}")
return None
def select_all_readings(conn):
"""Query all DHT readings in the dhtreadings table"""
try:
cursor = conn.cursor()
cursor.execute("SELECT * FROM dhtreadings ORDER BY currentdate DESC, currenttime DESC")
rows = cursor.fetchall()
print("\nAll DHT readings:")
print("ID | Temperature | Humidity | Date | Time | Device")
print("-" * 60)
for row in rows:
print(f"{row[0]} | {row[1]} | {row[2]} | {row[3]} | {row[4]} | {row[5]}")
except sqlite3.Error as e:
print(f"Error fetching data: {e}")
def main():
# Create a database connection
database = "dht_readings.db"
conn = create_connection(database)
# Create table
if conn is not None:
create_table(conn)
# Insert a sample reading as specified in your requirement
insert_dht_reading(conn, 22.5, 48.7, "manual")
# Insert some additional sample data for testing
insert_dht_reading(conn, 23.1, 45.2, "sensor1")
insert_dht_reading(conn, 21.8, 50.3, "sensor2")
# Display all readings
select_all_readings(conn)
# Close the connection
conn.close()
print("\nDatabase connection closed.")
else:
print("Error! Cannot create database connection.")
if __name__ == '__main__':
main()

Suporte Técnico e Discussão de Produtos
Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes formas de suporte e garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos diversos canais de comunicação para atender a diferentes preferências e necessidades.




