Какие таблицы создаются при выполнении запроса, который ничего не возвращает? - PullRequest
0 голосов
/ 08 июня 2018

Я использую petl и пытаюсь создать простую таблицу со значением из запроса.Я написал следующее:

@staticmethod
def get_base_price(date):
    # open connection to db
    # run SQL query to check if price exists for that date
    # set base price to that value if it exists
    # set it to 100 if it doesn't
    sql = '''SELECT [TimeSeriesValue]
        FROM [RAP].[dbo].[TimeSeriesPosition]
        WHERE TimeSeriesTypeID = 12
        AND SecurityMasterID = 45889
        AND FundID = 7
        AND EffectiveDate = %s''' % date
    with self.job.rap.connect() as conn:
        data = etl.fromdb(conn, sql).cache()
    return data

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

+-----------------+
| TimeSeriesValue |
+=================+
|     100         |
+-----------------+

Однако, если запрос ничего не возвращает, как будет выглядеть таблица?Я хочу установить TimeSeriesValue на 100, если запрос ничего не возвращает.Не уверен, как это сделать.

Ответы [ 2 ]

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

Запрос, который ничего не возвращает, просто отображает имена столбцов, ничего не находясь под ними.Я бы попробовал что-то вроде этого:

IF(TimeSeriesValue IS NOT NULL)
    <your query>
ELSE
    SET TimeSeriesValue = 100
0 голосов
/ 08 июня 2018

Вы должны передавать параметры при выполнении оператора, а не при обработке строки.,но это не главное в вашем вопросе.

Возможно, самое простое решение - выполнить всю работу в SQL.Если вы ожидаете не более одной строки из запроса, то:

SELECT COALESCE(TimeSeriesValue, 100) as TimeSeriesValue
FROM [RAP].[dbo].[TimeSeriesPosition]
WHERE TimeSeriesTypeID = 12 AND
      SecurityMasterID = 45889 AND
      FundID = 7 AND
      EffectiveDate = %s

Это всегда будет возвращать одну строку, а если ничего не будет найдено, будет введено значение 100.

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