Выберите данные на основе метки даты с помощью запроса sqlite3 - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь использовать sqlite3 для доступа к данным в базе данных на основе значения для метки даты.Пожалуйста, рассмотрите следующий код:

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 

Так что я бы сказал, что синтаксическая ошибка связана с минутами в отметке времени ..

1 Ответ

0 голосов
/ 08 июня 2018

Вместо

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)

, что решило проблему!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...