簡體   English   中英

從 sql 數據庫中過濾時間戳並提取為 python 中的列表

[英]Filter timestamp from sql database and extract as a list in python

我有一個來自紅色節點的 sql 數據庫。 數據庫表包含一個帶有 javascript date.now() 時間戳的列,例如 1641154320892。表的另一列包含溫度值。 我想 select 特定時間段的溫度值。

我嘗試了以下代碼:

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:無效語法”

我究竟做錯了什么?

首先是語法錯誤。

Python 中的字符串可以使用單引號和雙引號形成。 如果要在字符串中使用單引號,則外部字符串必須用雙引號封裝。

例如:

my_string = "My string has 'single quotes'"

現在來到您的查詢:

根據您的問題,存儲在 DB 中的數據采用時間戳的形式,例如: 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM