我有一個來自紅色節點的 sql 資料庫。資料庫表包含一個帶有 javascript date.now() 時間戳的列,例如 1641154320892。表的另一列包含溫度值。我想選擇特定時間段的溫度值。
我嘗試了以下代碼:
import sqlite3
conn = sqlite3.connect('/home/ktm/Developing/test/home_automation.db')
print ("Opened database successfully")
conn.row_factory = lambda cursor, row: row[0]
c = conn.cursor()
ids = c.execute('SELECT Buero_temp FROM home_automation WHERE Zeitstempel BETWEEN '2022-01-05' AND '2022-01-07';').fetchall()
for i in ids:
print (i)
不幸的是,我收到“SyntaxError:無效語法”
我究竟做錯了什么?
uj5u.com熱心網友回復:
首先是語法錯誤。
Python 中的字串可以使用單引號和雙引號構成。如果要在字串中使用單引號,則外部字串必須用雙引號封裝。
例如:
my_string = "My string has 'single quotes'"
現在來到您的查詢:
根據您的問題,存盤在資料庫中的資料采用時間戳的形式,例如:1641154320892. Javascript 使用 13 位時間戳。
因此,您應該使用時間戳進行查詢。
import sqlite3
def str_date_to_epoch(s):
print(s)
return int(datetime.strptime(s, '%Y-%m-%d').timestamp() * 1000)
conn = sqlite3.connect('/home/ktm/Developing/test/home_automation.db')
print("Opened database successfully")
conn.row_factory = lambda cursor, row: row[0]
c = conn.cursor()
statement = f"SELECT Buero_temp FROM home_automation WHERE Zeitstempel BETWEEN {str_date_to_epoch('2022-01-05')} AND {str_date_to_epoch('2022-01-07')};"
ids = c.execute(statement).fetchall()
for i in ids:
print(i)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/406861.html
標籤:
