Поскольку таблица yahoo.finance.option_contracts
является таблицей открытых данных сообщества, вы захотите включить ее как часть среды запроса. Самый простой способ сделать это — загрузить файл среды для всех столов сообщества; точно так же, как нажать «Показать таблицы сообщества» в консоли YQL.
Обычно это можно сделать, указав параметр env=...
в URL-адресе запроса YQL или (как вы сделали) с предложением use
в самом запросе.
Используемая вами библиотека Python позволяет передавать файл среды в качестве аргумента функции execute()
.
import yql
y = yql.Public()
query = 'SELECT * FROM yahoo.finance.option_contracts WHERE symbol="SPY"'
y.execute(query, env="store://datatables.org/alltableswithkeys")
Вот пример расширения yql.Public
для определения среды по умолчанию при создании экземпляра.
class MyYql(yql.Public):
def __init__(self, api_key=None, shared_secret=None, httplib2_inst=None, env=None):
super(MyYql, self).__init__(api_key, shared_secret, httplib2_inst)
self.env = env if env else None
def execute(self, query, params=None, **kwargs):
kwargs["env"] = kwargs.get("env", self.env)
return super(MyYql, self).execute(query, params, **kwargs);
Его можно использовать как:
y = MyYql(env="store://datatables.org/alltableswithkeys")
query = 'SELECT * FROM yahoo.finance.option_contracts WHERE symbol="SPY"'
r = y.execute(query)
Вы по-прежнему можете переопределить env
в отдельном вызове y.execute()
, если вам это нужно.
person
salathe
schedule
28.05.2013