Как создать смешивание строк "и" в 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)'''
Другие вопросы по тегам