What is SQLite and why is it suitable for storing sensor data on a Raspberry Pi?
SQLite is a lightweight, file-based database engine. It is suitable for Raspberry Pi because it requires no server setup, uses minimal resources, and stores data locally, making it ideal for small sensor data projects.
Click to reveal answer
beginner
Which Python module is commonly used to interact with SQLite databases on Raspberry Pi?
The 'sqlite3' module is commonly used in Python to create, read, update, and delete data in SQLite databases on Raspberry Pi.
Click to reveal answer
beginner
What is the purpose of the SQL command 'CREATE TABLE' in the context of sensor data?
'CREATE TABLE' defines a new table structure in the database to store sensor readings, specifying columns like timestamp, sensor type, and value.
Click to reveal answer
beginner
Why should sensor data entries include a timestamp?
Timestamps record when each sensor reading was taken, allowing tracking of data over time and analysis of trends or events.
Click to reveal answer
beginner
How do you insert a new sensor reading into an SQLite database using Python?
Use a SQL 'INSERT INTO' statement with parameters in Python's sqlite3 module, then commit the transaction to save the data.
Click to reveal answer
Which command creates a new table in an SQLite database?
AINSERT INTO
BSELECT
CCREATE TABLE
DUPDATE
✗ Incorrect
'CREATE TABLE' is used to define a new table structure in the database.
What Python module do you use to work with SQLite on Raspberry Pi?
Aos
Bpandas
Cmath
Dsqlite3
✗ Incorrect
The 'sqlite3' module provides functions to interact with SQLite databases.
Why is it important to include a timestamp with sensor data?
ATo increase database size
BTo know when the data was recorded
CTo make data unreadable
DTo slow down data insertion
✗ Incorrect
Timestamps help track when each sensor reading was taken.
Which SQL command adds new data to a table?
AINSERT INTO
BCREATE TABLE
CDELETE
DDROP TABLE
✗ Incorrect
'INSERT INTO' adds new rows of data to a table.
What is a key advantage of SQLite on Raspberry Pi for sensor data?
ANo need for a separate database server
BRequires internet connection
COnly works with large data sets
DNeeds complex setup
✗ Incorrect
SQLite stores data in a file and does not require a separate server.
Explain how to set up an SQLite database on Raspberry Pi to store sensor data.
Think about the steps from Python code to saving data.
You got /5 concepts.
Describe why SQLite is a good choice for logging sensor data on a Raspberry Pi.
Consider resource use and simplicity.
You got /5 concepts.
Practice
(1/5)
1. What is the main purpose of using SQLite on a Raspberry Pi for sensor data?
easy
A. To send sensor data directly to the cloud
B. To control the sensor hardware directly
C. To store sensor readings locally without needing a separate database server
D. To display sensor data on a web page automatically
Solution
Step 1: Understand SQLite's role on Raspberry Pi
SQLite is a lightweight database that runs locally without needing a separate server.
Step 2: Connect SQLite to sensor data storage
It stores sensor readings on the Raspberry Pi itself, making data management easy and offline.
Final Answer:
To store sensor readings locally without needing a separate database server -> Option C
Quick Check:
SQLite stores data locally = B [OK]
Hint: SQLite stores data locally on Pi, no extra server needed [OK]
Common Mistakes:
Confusing SQLite with cloud services
Thinking SQLite controls hardware
Assuming SQLite automatically displays data
2. Which of the following is the correct Python code snippet to create a table named sensors with columns id (integer primary key), name (text), and value (real)?
easy
A. cursor.execute('CREATE TABLE sensors (id INTEGER PRIMARY KEY, name TEXT, value REAL)')
B. cursor.execute('CREATE sensors TABLE (id INT, name STRING, value FLOAT)')
C. cursor.execute('MAKE TABLE sensors (id PRIMARY KEY, name TEXT, value REAL)')
D. cursor.execute('CREATE TABLE sensors id INTEGER, name TEXT, value REAL')
Solution
Step 1: Check SQL syntax for table creation
The correct SQL command is CREATE TABLE followed by table name and column definitions in parentheses.
Step 2: Match Python sqlite3 syntax
Python uses cursor.execute() with a valid SQL string. cursor.execute('CREATE TABLE sensors (id INTEGER PRIMARY KEY, name TEXT, value REAL)') matches correct SQL and Python syntax.
Final Answer:
cursor.execute('CREATE TABLE sensors (id INTEGER PRIMARY KEY, name TEXT, value REAL)') -> Option A
Quick Check:
Correct SQL CREATE TABLE syntax = D [OK]
Hint: Use 'CREATE TABLE table_name (columns)' inside cursor.execute() [OK]
Common Mistakes:
Using wrong SQL keywords like MAKE TABLE
Incorrect column types like STRING instead of TEXT
Missing parentheses around columns
3. Given this Python code snippet using sqlite3 on Raspberry Pi:
import sqlite3
conn = sqlite3.connect('data.db')
cursor = conn.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS sensors (name TEXT, value REAL)')
cursor.execute("INSERT INTO sensors VALUES ('temp', 23.5)")
cursor.execute('SELECT * FROM sensors')
rows = cursor.fetchall()
print(rows)
What will be the output?
medium
A. [('temp', 23.5)]
B. []
C. SyntaxError
D. None
Solution
Step 1: Understand table creation and insertion
The table 'sensors' is created if not exists, then a row ('temp', 23.5) is inserted.
Step 2: Fetch all rows and print
The SELECT query fetches all rows, which includes the inserted row, so print outputs [('temp', 23.5)].
Final Answer:
[('temp', 23.5)] -> Option A
Quick Check:
Inserted row fetched = [('temp', 23.5)] [OK]
Hint: Inserted data appears in fetchall() output as list of tuples [OK]
Common Mistakes:
Forgetting to insert data before SELECT
Expecting empty list if table exists
Confusing fetchall() output format
4. This Python code tries to insert sensor data but causes an error:
cursor.execute('CREATE TABLE sensors (name TEXT, value REAL)')
cursor.execute('INSERT INTO sensors (name, value) VALUES (?, ?)', ('humidity'))
conn.commit()
What is the error and how to fix it?
medium
A. Error: SQL syntax error; fix by removing parentheses in VALUES
B. Error: Missing second value in tuple; fix by adding a second value like ('humidity', 45.0)
C. Error: Table sensors does not exist; fix by creating table first
D. Error: commit() missing; fix by adding conn.commit()
Solution
Step 1: Identify parameter mismatch in INSERT
The VALUES clause expects two values, but only one ('humidity') is given as a tuple missing a second element.
Step 2: Fix by providing both values
Provide a tuple with two elements, e.g., ('humidity', 45.0), to match the two columns.
Final Answer:
Error: Missing second value in tuple; fix by adding a second value like ('humidity', 45.0) -> Option B
Quick Check:
Parameter count matches columns = C [OK]
Hint: Tuple for parameters must match number of placeholders [OK]
Common Mistakes:
Passing single string instead of tuple with two values
Ignoring commit() after insert
Wrong SQL syntax in INSERT statement
5. You want to store sensor readings with a timestamp in SQLite on Raspberry Pi. Which table schema and insertion code correctly store sensor name, value, and current time using Python's sqlite3?
hard
A. CREATE TABLE readings (name TEXT, value REAL, time TEXT); cursor.execute("INSERT INTO readings VALUES ('temp', 22.1, 'CURRENT_TIMESTAMP')")
B. CREATE TABLE readings (name TEXT, value REAL, time INTEGER); cursor.execute("INSERT INTO readings VALUES ('temp', 22.1, CURRENT_TIMESTAMP)")
C. CREATE TABLE readings (name TEXT, value REAL, time INTEGER); cursor.execute("INSERT INTO readings VALUES ('temp', 22.1, datetime('now'))")
D. CREATE TABLE readings (name TEXT, value REAL, time TEXT); cursor.execute("INSERT INTO readings VALUES ('temp', 22.1, datetime('now', 'localtime'))")
Solution
Step 1: Choose correct table schema for timestamp
Use TEXT type for time column to store datetime strings, which SQLite supports well.
Step 2: Insert current local time correctly
Use SQLite function datetime('now', 'localtime') to get current local timestamp as text.
Step 3: Match insertion code with schema
CREATE TABLE readings (name TEXT, value REAL, time TEXT); cursor.execute("INSERT INTO readings VALUES ('temp', 22.1, datetime('now', 'localtime'))") uses TEXT time column and inserts with datetime('now', 'localtime'), which is correct.
Final Answer:
CREATE TABLE readings (name TEXT, value REAL, time TEXT); cursor.execute("INSERT INTO readings VALUES ('temp', 22.1, datetime('now', 'localtime'))") -> Option D
Quick Check:
Local timestamp stored as TEXT = A [OK]
Hint: Use datetime('now', 'localtime') for current local time in SQLite [OK]
Common Mistakes:
Using CURRENT_TIMESTAMP without quotes in Python
Storing time as INTEGER without conversion
Ignoring localtime adjustment for timestamps
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.