Files
nebuleair_pro_4g/sqlite/read.py
PaulVua 857d590b8f Order database table display by insertion order (ROWID) instead of timestamp
Changed the data retrieval query to use ROWID DESC instead of timestamp DESC, ensuring that the most recently inserted data appears first regardless of timestamp field values. This fixes the issue where entries with "not connected" or invalid timestamps would appear in wrong order.

Benefits:
- Most recent database entries always shown at top
- Works correctly even when timestamp is null, "not connected", or incorrect
- Based on actual insertion order rather than timestamp field

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-07 14:38:22 +01:00

52 lines
1.3 KiB
Python
Executable File

'''
____ ___ _ _ _
/ ___| / _ \| | (_) |_ ___
\___ \| | | | | | | __/ _ \
___) | |_| | |___| | || __/
|____/ \__\_\_____|_|\__\___|
Script to read data from a sqlite database
/usr/bin/python3 /var/www/nebuleair_pro_4g/sqlite/read.py data_NPM 10
Available table are
data_NPM
data_NPM_5channels
data_BME280
data_envea
timestamp_table
data_MPPT
data_WIND
'''
import sqlite3
import sys
parameter = sys.argv[1:] # Exclude the script name
#print("Parameters received:")
table_name=parameter[0]
limit_num=parameter[1]
# Connect to the SQLite database
conn = sqlite3.connect("/var/www/nebuleair_pro_4g/sqlite/sensors.db")
cursor = conn.cursor()
# Retrieve the last sensor readings based on insertion order (ROWID)
# This ensures we get the most recently inserted data, regardless of timestamp value
if table_name == "timestamp_table":
cursor.execute("SELECT * FROM timestamp_table")
else:
# Order by ROWID DESC to get most recently inserted rows first
query = f"SELECT * FROM {table_name} ORDER BY ROWID DESC LIMIT ?"
cursor.execute(query, (limit_num,))
rows = cursor.fetchall()
# Keep DESC order - most recently inserted data first
# Display the results
for row in rows:
print(row)
# Close the database connection
conn.close()