我正在尝试使用sqlite3根据datestamp的值访问数据库中的数据。请考虑以下代码:
live_db_conn = sqlite3.connect('/Users/user/Documents/database.db')
time_period = (dt.now() - timedelta(seconds=time)).strftime('%H:%M:%S')
time_period_data = pd.read_sql_query('SELECT * FROM table1 WHERE Datestamp > {}'.format(str(time_period)), live_db_conn)
当我运行此代码时,我收到以下错误:
pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT * FROM table1 WHERE Datestamp > 12:33:33': near ":33": syntax error
我不明白这个错误来自哪里,因为如果我运行以下代码:
df = pd.read_sql_query('SELECT Datestamp FROM table1 LIMIT 10', live_db_conn)
print(df)
我得到以下输出:
Datestamp
0 10:46:54
1 10:46:59
2 10:47:04
3 10:47:09
4 10:47:14
5 10:47:19
6 10:47:24
7 10:47:29
8 10:47:34
9 10:47:39
所以看来(至少对我来说)我的sql查询是正确的。我试过.format(time_period)
而不是.format(str(time_period))
,但我无法弄清楚我做错了什么。
问题:如何选择与所选时间段对应的数据部分?
编辑:时间戳中的分钟似乎出现了问题。当我再次运行代码时,我得到了相同的错误,但是时间戳不同:
pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT * FROM table1 WHERE Datestamp > 12:49:10': near ":49": syntax error
所以我要说语法错误与时间戳中的分钟有关。
答案 0 :(得分:0)
而不是
time_period_data = pd.read_sql_query('SELECT * FROM table1 WHERE Datestamp > {}'.format(str(time_period)), live_db_conn)
我做了:
time_period_data = pd.read_sql_query('SELECT * FROM table1 WHERE Datestamp > "{}"'.format(time_period), live_db_conn)
解决了这个问题!