如何使用sqlite后端为python blaze提供用户定义的函数?

如何使用sqlite后端为python blaze提供用户定义的函数?,第1张

概述我使用连接到Blaze中的sqlite数据库 df = bz.Data(“sqlite:///< my database>) 一切正常,但我不知道如何在与df的交互中提供用户定义的函数. 我在df中有一个名为IP的列,它是包含IP地址的文本.我还有一个函数toSubnet(x,y),它接收文本格式的IP地址(x)并返回其/ y子网.例如: out = toSubnet('1.1.1.1',24) 我使用连接到Blaze中的sqlite数据库
df = bz.Data(“sqlite:///< my database>)
一切正常,但我不知道如何在与df的交互中提供用户定义的函数.
我在df中有一个名为IP的列,它是包含IP地址的文本.我还有一个函数tosubnet(x,y),它接收文本格式的IP地址(x)并返回其/ y子网.例如:

out = tosubnet('1.1.1.1',24)out1.1.1.0/24

现在,如果我想将所有IP映射到它们的/ 14子网,我使用:

df.IP.map(lambda x:tosubnet(x,14),'string')

当后端是CSV时,这适用.但是使用sqlite后端我得到NotImplementedError.
这有什么不对?

解决方法 注意:这并没有告诉你如何完全按照自己的意愿行事,但是它解释了为什么它不能正常工作,以及下一步可以使用sqlite.

您遇到的问题是,针对任意sql数据库高效执行任意Python代码非常困难.

Blaze使用sqlAlchemy获取用户代码并尽可能地将其转换为sql,我认为没有办法实现此目的.

由于几乎每个数据库都有不同的处理用户定义函数(UDF)的方法,因此构建允许以下内容的API需要做很多工作:

>用户在Python中定义函数
>将纯Python函数转换为数据库的UDF本机.

也就是说,sqlite的Python接口有一种方法来注册可以在SQL语句中执行的Python函数:

https://docs.python.org/2/library/sqlite3.html#sqlite3.Connection.create_function

目前没有办法使用sql后端使用Blaze表达UDF,尽管这可以实现为允许用户通过底层数据库的db API注册函数的新表达式类型.

总结

以上是内存溢出为你收集整理的如何使用sqlite后端为python blaze提供用户定义的函数?全部内容,希望文章能够帮你解决如何使用sqlite后端为python blaze提供用户定义的函数?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1156039.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存