从 sql 数据库中过滤时间戳并提取为 python 中的列表
Filter timestamp from sql database and extract as a list in python
我有一个来自节点 red 的 sql 数据库。数据库的 table 包含一个带有 javascript date.now() 时间戳的列,例如1641154320892。 table 的另一列包含温度值。我想要 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'"
现在来回答您的问题:
根据您的问题,存储在数据库中的数据以时间戳的形式存在,例如: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)
我有一个来自节点 red 的 sql 数据库。数据库的 table 包含一个带有 javascript date.now() 时间戳的列,例如1641154320892。 table 的另一列包含温度值。我想要 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'"
现在来回答您的问题:
根据您的问题,存储在数据库中的数据以时间戳的形式存在,例如: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)