Как создать смешивание строк "и" в python, для запроса на infxdb?
Я пытаюсь написать следующее строковое предложение, чтобы сделать запрос о притоке БД:
query=SELECT FIRST("price") ,LAST("price") ,MAX("price") ,MIN("price") ,SUM("amount") FROM "table name" WHERE time >= '2018-05-10T12:02:00Z' AND time <= '2018-06-10T12:03:00Z' GROUP BY time(1h)
Однако, поскольку он смешивает "и" в одной строке, я не смог правильно проанализировать в Python.
Когда я пытаюсь:
query='SELECT FIRST("price") ,LAST("price") ,MAX("price") ,MIN("price") ,SUM("amount") FROM "table name" WHERE time >= '2018-05-10T12:02:00Z' AND time <= '2018-06-10T12:03:00Z' GROUP BY time(1h)'
В нем указан неверный синтаксис из-за 'до даты, которая закрывает строку. Я также пытаюсь удалить или просто поставить "вместо", но это не сработало. Наконец я попробовал что-то более грязное:
query='SELECT FIRST("price") ,LAST("price") ,MAX("price") ,MIN("price") ,SUM("amount") FROM 'tablename' WHERE time >='+"'2018-05-10T12:02:00Z'"+' AND time <= '+"'2018-06-10T12:03:00Z'"+'GROUP BY time(1h)'
но я получил пустой запрос. Я ценю любую помощь в этом, спасибо.
1 ответ
Если вы хотите буквальный '
в строке, а строковый литерал использует '
Вы должны сбежать '
с \
, То же самое касается "
, Используйте свой второй пример, но положите \
перед всем своим внутренним '
,
query='SELECT FIRST("price") ,LAST("price") ,MAX("price") ,MIN("price") ,SUM("amount") FROM "table name" WHERE time >= \'2018-05-10T12:02:00Z\' AND time <= \'2018-06-10T12:03:00Z\' GROUP BY time(1h)'
Другой способ, который имеет дополнительное преимущество в том, чтобы сделать ваш код более читабельным, состоит в использовании многострочного синтаксиса Python, который состоит из трех одинарных или двойных кавычек.
query='''SELECT FIRST("price")
,LAST("price")
,MAX("price")
,MIN("price")
,SUM("amount")
FROM "table name"
WHERE time >= '2018-05-10T12:02:00Z'
AND time <= '2018-06-10T12:03:00Z'
GROUP BY time(1h)'''