Поскольку таблица yahoo.finance.option_contracts
является Community Open Data Table, вы захотите включить ее как часть среды для запроса. Самый простой способ сделать это - загрузить файл окружения для всех общих таблиц; так же, как нажать «Показать таблицы сообщества» в консоли 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()
, если вам нужно.
Nope .. Он говорит, что определение не найдено даже в ссылке, которую вы указываете – karthikr