hardwellZero: питон же исключительно гибкий язык.
абстрактный пример, как это можно сделать:
from grab import Grab()
g=Grab()
url_list = [] # тут список ваших урлов
def page_handler(url):
#функция принимает на вход url в виде строки
resp = g.go(url)
data = resp.xpath() #тут xpath-селектор, возможно синтаксис немного не такой
return data
all_data = [page_handler(url) for url in url_list]
print(all_data)
Чем такой подход не устраивает?
Алексей М.: если вы поставили conda, можете смело попробовать iopro (conda install iopro).
Скорость у него по сравнению с read_sql_query гораздо больше.
Алексей М.: Тут есть одна важная деталь - если у Вас Oracle база находится на localhost, то тогда скорость будет очень хорошей. Если она удаленная, и у Вас слабый канал, то проброс данных будет долгим, потому что sqlalchemy (не sqllite, перепутал название) очень плохо сжимает данные.
B@rmaley.e><e: Вот у меня лично разрыв шаблона. Потому что по факту, к продакшен аналитике как раз таки ближе R, тут у него и RevolutionR, и DistributedR от HP, и Shiny-сервер для dashboarding'га. В сравнении с этим Python нечем похвастать. При этом python считается стандартом для data mining.
Koviryalko: не только интерес, я работаю аналитиком почти год. Могу так же добавить, что если хотите в анализ развиваться, Java нужна как воздух, как минимум на базовом уровне. Большая часть hadoop-фреймворков поддерживает только ее в качестве инструмента для управления.
У меня почему то его нет - если ввести в терминал sqlldr пишет что нет такого файла. При этом sqlplus работает. Что-то нужно добавить в PATH? Ос - win7.
Кирилл Маренов: на мой субъективный взгляд, для того чтобы подтянуть математику на достаточный уровень нужно очень вдумчиво читать что-то из:
1. Математическая литература из НМУ - Анализ Арнольда (вообще в обязательном порядке, с него все пляшет, без частичного понимания хотя бы первого тома этой книги к более серьезной литературе не подойти), лекции по линейной алгебре, терверу.
2. Лекции В. Босса по математике - там 4 тома. Возьмите те, которые по профилю (1-Анализ,3-линейная алгебра,4 - вероятность).
Могу лично от себя сказать - для меня чтение Арнольда было экстра сложным, однако после было очень легко читать и Айвазяна, и Мхитаряна и литературу по нейросетям (Хайкин).
Думаю, что заочные курсы здесь мало чем помогут - нужно сидеть и долго напряженно "втыкать" во все написанное.
К счастью, я уже разобрался в ситуации, но спасибо за помощь!)
Ситуация собственно следующая - не нужно явно указывать ни sid ни service_name в параметрах строки подключения. Достаточно в tnsnames.ora в стандартном синтаксисе прописать необходимые базы данных, и потом к ним можно будет подключаться вот таким образом:
import sqlalchemy as sql
e=sql.create_engine('oracle://user:password@tns_db')
e.connect()
Где tns_db - имя базы в файле tnsnames.ora:
tns_db=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=dev1)
(PORT=1521)
)
(CONNECT_DATA=
(SID=TEST)
)
)
Woila!
К сожалению, этот форк у меня не пожелал установиться через python setup.py install.
Однако я нашел форк Jpype для py-3, и он отлично работает: https://pypi.python.org/pypi/JPype1-py3/0.5.5.2
Пример кода для генерации вектора случайных значений:
import jpype
p=jpype.getDefaultJVMPath()
if not jpype.isJVMStarted():
jpype.startJVM(p)
print('JVM started')
rnd_vec=[jpype.java.util.Random().nextGaussian() for i in range(1000)]
print(rnd_vec[:5])
Стоит отметить, что по окончанию выполнения JVM выключается самостоятельно, а использование jpype.shutdownJVM() приводит к RuntimeError.
Пётр: не вижу смысла использовать ZODB. Мне кажется, для такой задачи подойдет обычная реляционная БД, например SQLite, тем более что для нее есть sqlalchemy.
print(df[[0,1]])