вызов функций SQL из Blaze

в частности, я хотел бы назвать Postgres

3 ответов


Blaze-это только интерфейс; и реструктурирует, а затем дает запрос бэкэнду SQL, который собирает данные из вашей БД.

из д.:

какие операции работают с базами данных SQL? Большинство табличных операций, но не все. Перевод SQLAlchemy является высоким приоритетом. Сбои включают массив такие операции, как нарезка и точечные продукты, не имеют смысла в SQL. Кроме того, некоторые операции, такие как datetime access еще не хорошо поддерживается через SQLAlchemy. Наконец, некоторые базы данных, такие как SQLite, имеют ограниченную поддержку общих математических функций, таких как sin.

Blaze предназначен для того, чтобы забыть о бэкэнде и иметь аналогичный / одинаковый синтаксис для всех бэкэндов. Поэтому он поддерживает только общие операции. На мой взгляд, нет возможности указать функции sqlalchemy или postgresql для использования blaze, поэтому я думаю, что это сейчас невозможно.

... но blaze имеет версию 0.10, это своего рода бета-версия с активным вкладом в прошлом году. Уверен, что через некоторое время это будет реализовано. Вы всегда можете отслеживать изменения в заметки.

дополнительно: Для дальнейшего объяснения UDFs (пользовательских функций) в SQL и работы с ними в blaze сравните ссылка предоставлена beldaz (очень похоже на этот вопрос).


PyPi - твой друг. Поиск там находит питон-Левенштейна пакет. Если вы находитесь в windows и хотите предварительно скомпилированную версию, используйте колесо Кристофа Гольке (его сборки безопасны, надежны и правильны; сборки numpy используют библиотеки MKL, поэтому они тоже быстры!).


Если вы хотите увидеть эти слова и выполнить некоторые простые действия над ними, вы можете попытаться загрузить отфильтрованные данные в Blaze из запроса Postgres.

from blaze import data
import sqlalchemy as sa

engine = sa.create_engine('postgresql://...')
result = engine.execute('''select word from wordtable where levenshtein(word, 'similar') < 3;''')
rows = result.fetchall()
wordtable = data(rows)

# Now you may work with wordtable as a blaze table
wordtable[wordtable.word.like('a*')]  # all words starting with 'a'