使用嵌入式Python生成数据流
Hi Developers,
嗨,各位开发者们:
各位都知道,Python是一个庞大而强大的生态系统,包含了成千上万的库和包,特别是在数据科学方面。
因此,我想首次尝试使用IRIS最近的一项功能--嵌入式Python,简单地导入一个名为datetime的Python库,生成带有时间戳成分的数据,并在InterSystems IRIS for Health Data Platform中持久化。同样的方法在IRIS数据平台上也可以使用。
我把这个小项目分成了两个主要部分。
*按照IRIS for Health Data Platform的文档设置嵌入式Python环境
*使用嵌入式Python创建时间戳数据作为例子,并使用datetime包持久化到IRIS。
1. 在 InterSystems IRIS for Health Data Platform 2022.1 上设置嵌入式 Python。
- 在Windows上,打开CMD terminal
C:\InterSystems\IRISHealth\bin>irispip install --target C:\InterSystems\IRISHealth\mgr\python numpy
注意:这是检查嵌入式Python环境的步骤,因为我发现当我使用IRIS 2021.0时,irispip经常不工作。
- 通过导入一个Python math packge来测试Python功能
打开IRIS终端,在USER命名空间中执行以下程序:set pymath = ##class(%SYS.Python).Import("math")
然后执行write pymath.pi,你可以看到你已经成功调用了Python包,输出结果如下。
USER>write pymath.pi
3.141592653589793116
- 而我们也可以通过从IRIS terminal打开来启动Python shell。
do ##class(%SYS.Python).Shell()
Class User.PythonFirstTry Extends %RegisteredObject { ClassMethod pyHello() As %Status { set pythonBuiltins = ##class(%SYS.Python).Builtins() do pythonBuiltins.print("Hello World!") } ClassMethod pyForLoop() [ Language = python ] { for i in range(5): print("Python") } } |
我写了两个类方法,你可以试着把它们放在一个.cls文件中,编译一下,看看输出。
执行方法如下:
USER>do ##class(User.PythonFirstTry).pyHello()
Hello World!
USER>do ##class(User. PythonFirstTry).pyForLoop()
Python
Python
Python
Python
Python
2. 使用python库来生成数据流并持久化到InterSystems IRIS中。
生成数据流所需的Python库:
导入datetime包(这不需要使用CLI进行额外的安装)。
除了datetime包,我还尝试使用了其他的库和包,但是其中一些并不在Embedded Python中。要安装这些东西,请打开 CMD terminal (Windows),然后运行以下程序 (XX 将被替换成包的名称)。
C:\InterSystems\IRISHealth\bin>irispip install XX
以下是生成数据并持久化到IRIS的步骤:
1.创建 %Persistent类
2. 创建Property
3.设置一个类方法(例如:GetData)并指定[Language = python] 。
4.通过调用datetime python库生成数据,使用以下代码片段
注意:timeNow需要被转换为字符串数据类型
5.通过IRIS terminal 执行GetData()方法,执行SQL查询
注意:你可以使用一种简单的 "For " 循环来控制这种方式产生的数据量的规模。
感谢翻译!! @Weiwei Gu