文章
Weiwei Gu · 九月 28 阅读大约需 3 分钟

使用嵌入式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 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 " 循环来控制这种方式产生的数据量的规模。

1
0 36
讨论 (1)1
登录或注册以继续