首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Blaze调用SQL函数

从Blaze调用SQL函数
EN

Stack Overflow用户
提问于 2016-11-18 07:04:55
回答 3查看 706关注 0票数 6

特别是,我想调用Postgres levenshtein函数。我想写火焰查询,以返回与“相似”一词类似的词(相当于:

代码语言:javascript
复制
select word from wordtable where levenshtein(word, 'similar') < 3;

在烈火中,这看起来应该像

代码语言:javascript
复制
db.wordtable.word[levenshtein(db.wordtable.word, 'similar') < 3]

但是在我在python端导入的任何模块中都没有定义levenshtein。在哪里/如何获得一个levenshtein定义,以便在Python的Blaze表达式中使用?

我已经找到了sqlalchemy.sql.func包,它为SqlAlchemy函数提供了Python,以便与SqlAlchemy一起使用,但是这些包在Blaze表达式中不起作用。是否存在等效的Blaze包,或者如何在Blaze表达式中使用sqlalchemy.sql.func.levenshtein

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-10 12:51:19

Blaze只是一个前端;并且重新构造,然后将查询提供给SQL后端,后者从您的DB收集数据。

从杜库

SQL数据库上有哪些操作?大多数表格操作,但不是全部。SQLAlchemy翻译是一个高度优先考虑的问题。失败包括像切片和点产品这样的数组操作在SQL中没有意义。此外,一些操作(如日期时间访问)还没有通过SQLAlchemy得到很好的支持。最后,一些数据库,如SQLite,对诸如sin这样的通用数学函数的支持有限。

Blaze打算忘记后端,并且对所有后端都有相似/相同的语法。因此,它只支持普通操作。在我看来,没有可能指定sqlalchemy或postgresql函数供blaze使用,因此我认为这是不可能的。

.,但 blaze有0.10版,它是一种测试,在去年做出了积极的贡献。我有信心,这将在一段时间内实施。您始终可以跟踪发布说明中的更改。

此外:要进一步解释SQL中的UDF(用户定义函数)并在blaze中使用它们,请比较beldaz提供的链接 (非常类似于这个问题)。

票数 1
EN

Stack Overflow用户

发布于 2016-11-30 06:15:28

PyPi是你的朋友。在那里搜索可以找到python-Levenshtein包。如果您在windows上并想要预编译版本,请使用克利斯朵夫·戈尔克(氏)车轮 (他的构建是安全、可靠和正确的;numpy构建使用MKL库,所以它们也是快速的!)

票数 2
EN

Stack Overflow用户

发布于 2016-12-05 10:48:52

如果您希望看到这些单词,并对它们执行一些简单的操作,您可以尝试加载过滤过的数据,以便从Postgres查询中获得数据。

代码语言:javascript
复制
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'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40671211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档