#InterSystems IRIS

0 关注者 · 940 帖子

InterSystems IRIS 是一个完整的数据平台
InterSystems IRIS 为您提供了捕获、共享、理解组织最宝贵的资产(数据)并采取相应行动所需的一切。
作为一个完整的平台,InterSystems IRIS 不需要集成多种开发技术。应用程序需要更少的代码、更少的系统资源和更少的维护。

文章 Michael Lei · 九月 27, 2024 7m read

经过将近四年的停顿,我的 CI/CD 系列又回来了! 这些年来,我与多个 InterSystems 客户合作,为不同的用例开发 CI/CD 管道。 希望本文中提供的信息对您有所帮助。

系列文章探讨了使用 InterSystems 技术和 GitLab 进行软件开发可以采用的几种方式。

我们有一系列激动人心的话题要讨论:但今天,我们来谈谈代码之外的事情 – 配置和数据。

问题

之前我们探讨过代码提升,这在某种程度上是无状态的 – 我们总是从一个(大概)空实例到完整的代码库。 但有时,我们需要提供数据或状态。 不同的数据类型包括:

  • 配置:用户、Web 应用、LUT、自定义架构、任务、业务伙伴等
  • 设置:环境特定的键值对
  • 数据:为了让应用正常工作,通常必须提供引用表等

我们来探讨所有这些数据类型,以及如何先将它们提交到源代码控制工具中,然后进行部署。

配置

系统配置分布在许多不同的类中,但 InterSystems IRIS 可以将大多数类导出为 XML。 首先是一个安全软件包,其中包含以下信息:

  • Web 应用程序
  • DocDB
  • 审核事件
  • KMIP 服务器
  • LDAP 配置
  • 资源
  • 角色
  • SQL 特权
  • SSL 配置
  • 服务
  • 用户

所有这些类都提供 Exists、Export 和 Import 方法,允许您在不同的环境之间移动它们。

一些注意事项:

  • 用户和 SSL 配置可能包含敏感信息,例如密码。
0
0 117
文章 Michael Lei · 九月 27, 2024 6m read

在这一系列文章中,我想向大家介绍并探讨使用 InterSystems 技术和 GitLab 进行软件开发可以采用的几种方式。 我将介绍以下主题:

  • Git 101
  • Git 流程(开发流程)
  • GitLab 安装
  • GitLab 工作流
  • 持续交付
  • GitLab 安装和配置
  • GitLab CI/CD
  • 为何使用容器?
  • 容器基础架构
  • 使用容器的 CD
  • 使用 ICM 的 CD
  • 容器架构

在本文中,我们将讨论如何构建并部署您自己的容器。

0
0 177
文章 Michael Lei · 九月 27, 2024 9m read

在这一系列文章中,我想向大家介绍并探讨使用 InterSystems 技术和 GitLab 进行软件开发可以采用的几种方式。 我将介绍以下主题:

  • Git 101
  • Git 流程(开发流程)
  • GitLab 安装
  • GitLab 工作流
  • 持续交付
  • GitLab 安装和配置
  • GitLab CI/CD
  • 为何使用容器?
  • 容器基础架构
  • 使用容器的 CD
  • 使用 ICM 的 CD

在本文中,我们将使用 InterSystems Cloud Manager 构建持续交付。 ICM 是一个面向基于 InterSystems IRIS 的应用程序的云配置和部署解决方案。 它允许您定义所需部署配置,ICM 会自动提供这些配置。 有关详情,请参阅 ICM 概述

0
0 182
公告 Claire Zheng · 九月 11, 2024

HI 各位开发者们,

📅2024年9月23日🕑14:00-15:30🕞,InterSystems将举办线上研讨会,点击🔔此处🔔报名参会。

此次研讨会以“面向未来的数据平台——InterSystems IRIS五大亮点提速数据潜力挖掘与AI应用”为主题,帮助您了解InterSystems IRIS数据平台的五大亮点:

  • 使用InterSystems IRIS for Health进行FHIR开发
  • 使用Python进行互操作Production开发
  • InterSystems IRIS列存储
  • InterSystems IRIS外部表(Foreign Table)
  • InterSystems IRIS向量和基于向量检索的患者相似度匹配
2
0 215
文章 Hao Ma · 九月 23, 2024 5m read

InterSystems IRIS 数据平台作为关系数据库使用时,传统上以行为单位存储数据。现在,由于底层数据结构的灵活性,您也可以按列存储数据。虽然每种选择都有其优点,但在列中存储数据(称为列式存储)可以在数据分析的业务中显著提高各种用例的性能。列存储自2022.2 版的IRIS起做实验功能引入, 2023.1 起正式支持,到目前已经迭代了几个版本。

假设一家公司使用基于行的存储来保存收到的所有订单数据,跟踪订单 ID、订单日期、客户、优先级、状态和总金额等数据,使用行存储可以被示意为下面的图形:

row_storage

每一行数据在逻辑上对应一个订单,单行中的所有数据在物理上存储在一起。

这种模式便于快速添加或更新订单。订单可以一次添加一个,数据库的每次写入正好对应一行。当发生了订单的事务,除了要更改的行之外,无需访问或更新表中的任何数据。

让我们考虑另外的情况:假设公司想找到每个月的平均销售收入。为此,您只需要两列的信息: 订单日期和总金额。但是,如果使用基于行的存储,则必须检索每个订单的所有数据才能获得此信息。即使在 OrderDate 列上使用了索引,仍需要读取日期范围内每个订单的完整行,才能获得总金额。如果订单数量较多,这样做的效率会非常低。

这就是列式存储的作用所在。数据不是按行存储在一起,而是按列存储在一起。从逻辑上讲,表和数据之间的关联保持不变。改变的只是物理存储方法。

0
0 155
文章 姚 鑫 · 九月 19, 2024 2m read

第二十九章 添加数字签名 - 指定 的规范化方法

默认情况下, 元素使用Exclusive XML Canonicalization进行规范化, 元素包括以下内容:

<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">

要使用包容性 XML 规范化来规范化此元素,请执行以下操作:

 Set sig.SignedInfo.CanonicalizationMethod.Algorithm=$$$SOAPWSc14n

其中 sig%XML.Security.Signature 的实例。

在这种情况下, 包含以下内容:

<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315">

添加签名确认

WS-Security 1.1 功能使 Web 客户端能够确保收到的 SOAP 消息是响应 Web 客户端发送的原始请求而生成的。客户端请求通常经过签名,但并非必须如此。在此机制中,Web 服务将 元素添加到安全标头元素,Web 客户端可以检查该 元素。

0
0 114
文章 Louis Lu · 九月 2, 2024 2m read

当进程中的数据不需要持久化保存,但又需要用到global的高性能特性时,我们常常将数据保存在临时global中,也就是保存在IRISTEMP/CACHETEMP数据库中。

系统使用 IRISTEMP/CACHETEMP 数据库保存临时的数据,用户也可以进行同样的操作。

关于临时global以及IRISTEMP数据库的更多内容,可以参见文档 Temporary Globals and the IRISTEMP Database

以下情况global作为临时使用:

  1. 系统临时global (^IRIS.
0
0 138
文章 姚 鑫 · 八月 28, 2024 2m read

第九章 创建和使用策略 - 创建并附加策略

创建并附加策略

要创建策略并将其附加到Web 服务或客户端,请创建并编译配置类。有多种方法可以创建此类:

  • 使用 GeneratePolicyFromWSDL() 方法从 WSDL 生成配置类。如果 Web 服务或客户端类已存在,并且您不想重新生成,则适用此选项。
  • 为现有的 Web 服务或客户端手动创建配置类。

如果从 WSDL 生成策略类,则可能需要按下一节所述对其进行编辑。

WSDL 生成策略

在某些情况下,可能已经有客户端类,但没有相应的配置类。例如,如果从 WSDL 生成客户端类,而 WSDL 后来被修改为包含 WS-Policy 信息,则可能会发生这种情况。在这种情况下,可以使用 %SOAP.WSDL.Reader中的实用程序方法单独生成配置类,如下所示:

  1. 创建 %SOAP.WSDL.Reader 的实例。
  2. 根据需要设置该实例的属性。请参阅 %SOAP.WSDL.Reader 类文档。

不要使用 Process() 方法。

  1. 调用实例的 GeneratePolicyFromWSDL() 方法。
0
0 135
文章 Jeff Liu · 八月 26, 2024 2m read

出于实际原因,可能需要在 Linux 服务器重启后自动启动 IRIS 实例。

下面是在 Linux 服务器重启时通过 systemd 自动启动 IRIS 的步骤:

1. 在 /etc/systemd/system/iris.service 中创建一个 iris.service 文件,其中包含以下信息

[Unit]
Description=InterSystems IRIS Data Platform
After=network.target

[Service]
Type=forking
User=irisusr
ExecStart=/usr/bin/iris start iris
ExecStop=/usr/bin/iris stop iris quietly
Restart=on-failure
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

注意:User应该填入IRIS实例的所有者。

2. 重新加载 systemd 配置管理器

sudo systemctl daemon-reload

3. 启用IRIS服务,使其自动启动

sudo systemctl enable iris

激活后将创建软链接,自动启动 IRIS:

Synchronizing state of iris.
0
0 235
文章 Cryze Zhang · 八月 18, 2024 1m read

由于个人习惯,更喜欢将代码文件使用xml格式导入导出,但是有时后翻代码,xml格式的阅读体验没那么好,如果要是导入到studio又太麻烦,所以实现了一个在线工具,解析xml内容,将其转换为在Studio看到的内容,即所谓的UDL(Universal Definition Language)格式。
小工具地址

https://ttykx.com/demos/cos/xml2Udl.html

1.选择xml文件,读取内容。

2.解析项目,按项目显示原xml内容

3.转为UDL格式内容

0
0 150
文章 Michael Lei · 八月 17, 2024 3m read

各位社区成员,大家好,

利用面向您的组织中的各个角色提供的全套 InterSystems 学习资源(在线或面授形式),您可以全面挖掘 InterSystems IRIS 的潜力,并帮助您的团队完成入门流程。 开发者、系统管理员、数据分析师和集成商可以快速上手。

学习服务提供的资源

在深入学习角色特定的资源之前,我们先来总体了解一下现有的学习资源:

  • 💻 在线学习:在 learning.intersystems.com 上免费注册,以访问自定进度的课程、视频和练习。 您还可以完成基于任务的学习路径或基于角色的计划,以促进您的职业发展。
  • 👩‍🏫 课堂培训:查看直播、面授或虚拟课堂培训的时间安排,或为您的团队申请不公开课程。 访问 classroom.intersystems.com 了解详细信息。
  • 📘 InterSystems IRIS 文档:全面的参考资料、指南和操作说明文章。 探索文档
  • 💬 开发者社区:与其他开发者互动、发布问题、阅读文章并及时了解最新公告。 请先阅读本帖,其中介绍了在开发者社区中学习的技巧
  • 📧 支持:如需获取技术支持,请发送电子邮件至 support@intersystems.com
0
0 577
文章 姚 鑫 · 八月 12, 2024 2m read

第八章 指定自定义 HTTP 请求

默认情况下,Web 客户端使用 HTTPSOAP 消息传输到 Web 服务并接收响应。Web 客户端会自动创建并发送 HTTP 请求,但可以创建自定义 HTTP 请求。为此,请使用以下步骤:

  1. 在创建 %Net.HttpReques 的实例并根据需要设置属性。有关此类的信息,请参阅使用 Internet 实用程序或 %Net.HttpRequest类文档。
  2. Web 客户端的 HttpRequest 属性设置为等于此实例。

如果希望在同一会话中支持对 SOAP 服务的多次调用,这尤其有用。默认情况下, Web 客户端不支持使用同一会话对 SOAP 服务进行多次调用。要解决此问题,创建一个新的 %Net.HttpRequest 实例,并将其用作 Web 客户端的 HttpRequest 属性。此更改强制对所有调用重复使用相同的 HTTP 请求,这将在对下一个请求的响应中返回所有 cookie

自定义 Web 客户端的回调

可以通过覆盖其回调方法来定制 Web 客户端的行为:

%OnSOAPRequest()

Method %OnSOAPRequest(mode As %String, 
                      client As %SOAP.
0
0 142
文章 Michael Lei · 八月 6, 2024 5m read

数据收集

这篇分步说明指南将讲解如何创建任务来收集 InterSystems 数据库及其全局变量的相关数据(如关联的 Open Exchange App 所示,其中包含所有相关代码)

免责声明:此软件仅用于测试/演示目的。 InterSystems 不支持将此代码作为任何发布产品的一部分。 它由 InterSystems 提供,作为特定产品和版本的演示/测试工具。 用户或客户全权负责此软件交付后的维护和测试,InterSystems 对此代码的错误或误用不承担任何责任

  1. 首先,通过管理门户导入文件“DataCollection.xml”,并确保没有错误。 如果存在错误,则可能是版本问题,请发送电子邮件至 ari.glikman@intersystems.com 联系 Ari Glikman 获取适合你的版本的支持。 另外,确保将数据导入到你想要收集其内部数据以供后续检查的命名空间中。

  2. 导入完成后,应该看到 Sample 软件包以及几个子软件包 image

如果服务器上已经存在 Sample 软件包,那么你仍然应该可以看到新的子软件包以及先前存在的其他文件夹。

  1. 现在,运行单元测试以确保一切正常运行。

a. 创建可以被 InterSystems Terminal 读取的名为 Unit Tests 的文件夹,例如,由于我有一个本地安装,我需要在 C 盘中创建一个文件夹。

image

b.

3
0 151
文章 Michael Lei · 八月 7, 2024 6m read

表的图形显示

在这里,我们将说明如何以图形方式显示数据收集的结果。 项目的输出将如下所示:

image

我使用的是本地计算机。 如果你在服务器上,注意使用正确的 IP 地址。

首先,导入需要的三个类(注意,我们将晚些时候编辑它们):

你可以使用 xml 并将其导入系统。

规范将创建调度类和实现模板。 如果你想详细了解此过程,可以读一读我同事 Eduard Lebedyuk 写的文章

设置 API

注意,在此演示中我们将使用 Basic Authorization。 我们还假设 Sample_DBExpansion_Data.DBAnalysisInfo 和 Sample_DBExpansion_Data.GlobalAnalysisInfo 表中已经有数据。 如果没有,返回数据收集获取数据。

  1. 首先,创建一个可以让我们访问数据的端点: image

填写相同的名称,除非你打算为 react 应用自行定制代码。

  1. 点击 Save,然后测试我们的 API。
0
0 136
文章 Michael Lei · 八月 7, 2024 3m read

数据分析

这是数据收集的续集。 如果你还没有安装,请先完成安装。

这里提供的是对先前收集的数据的分析。

你需要导入构成此仓库的 xml,与先前仓库中的操作大致相同。

最顶层有一个任务:

InvestigateInfoTask

这个任务将允许我们设置将要监控的参数, 如下所示:

image

GrowthPercentageWarning:对于Global增长来说,“可接受的”百分比增长。

PeriodWarning:Global在多少天内实现增长是合理的?

HistoryLength:回溯 Sample_DBExpansion_Data.GlobalAnalysisInfo 表的时长。

默认设置为 7 天内增长 5%,回溯过去 30 天。 设置参数后,即使任务已经运行一次或多次,你仍然可以再次编辑。 转到任务详细信息,点击 Edit,然后根据需要更改。

该任务会调用 Sample.DBExpansion.DBSizeAnalysis.InvestigateInfo 类的 CreateReport 方法。

CreateReport 将填充两个表,如下所述:

  1. GlobalInvestigationReport
  • 这个表将保存分析 Sample_DBExpansion_Data.GlobalAnalysisInfo 表的“报告”。 我们可以通过多个字段用不同的参数来衡量增长。
0
0 123
文章 姚 鑫 · 八月 7, 2024 1m read

第三章 控制 xsi:type 属性的使用

控制 xsi:type 属性的使用

默认情况下, SOAP 消息仅包含顶级类型的 xsi:type属性。例如:

<?xml version="1.0" encoding="UTF-8" ?>
...
<types:GetPersonResponse>
<GetPersonResult href="#id1" />
</types:GetPersonResponse>
<types:Person id="id1" xsi:type="types:Person">
<Name>Yeats,Clint C.</Name>
<DOB>1944-12-04</DOB>
</types:Person>  
...

在这些示例中,已添加换行符以提高可读性。要将此属性用于 SOAP 消息中的所有类型,请执行以下操作之一:

  • Web 客户端实例中将 OutputTypeAttribute 属性设置为等于 1
  • Web 客户端类中将 OUTPUTTYPEATTRIBUTE 参数设置为等于 1

相同的输出将如下所示:

<?xml version="1.
0
0 61
文章 Michael Lei · 八月 7, 2024 5m read

默认情况下,在容器内创建的所有文件都存储在可写的容器层上。 这意味着:

  • 当容器消失时,数据将不会持续存在,并且如果另一个进程需要数据,很难将数据从容器中取出。
  • 容器的可写层与运行容器的主机紧密耦合。 你无法轻易将数据移动到其他地方。
0
0 207
文章 Michael Lei · 八月 6, 2024 2m read

开发新的互操作性Production时,最初在Production中添加设置是很自然的做法。

不过,一旦要将Production从开发环境移动到测试或其他环境,你就会发现 HTTP 服务器、IP 地址和/或端口之类的设置都需要更改。 为了避免这些设置在后续重新部署时被覆盖,必须将这些设置从Production得设置中移动到系统默认设置(System Default Settings)。

虽然系统默认设置可以手动创建,但是当生产中有大量业务组件时会难以处理。 因此,@Wietze Drost 让我开发一个工具自动执行此流程,通过筛选表达式指定哪些设置必须创建为系统默认设置。

  • 这个表达式可以定义为“*:HTTPServer,SSLConfig*”,其中“\*”表示“为任何主机类名”。 冒号后面是需要移动的设置列表。 所以,这个表达式的意思是“为所有名为 HTTPServer 和 SSLConfig 的设置创建或更新系统默认设置”。
1
0 127
文章 Louis Lu · 八月 6, 2024 4m read

在使用 InterSystems ObjectScript 进行编程时,当你定义了属性property、查询query或者索引index,系统会在编译的过程中自动创建与之相关的一些方法,这篇文章对这些方法做了些总结:

属性Properties

1. 假设你定义了一个属性 Property, 下面的方法会被自动创建

ClassMethod PropertyGetStored(id)

对于数据类型属性,这个函数将返回其逻辑值,对于对象属性,返回id。这是一个对类global数据的封装,也是获取单例属性值(singular property value)最快的方法。此方法仅适用于已持久化存储的属性。

这里是一段采用多种方法读取数据的对比代码,用于测试各种访问数据方式的时间差异,其结果是:

Iterations: 10000
Object access: .130111
GetStored access: .014388
SQL access: .020268
Global access: .007717
Object access takes 904.30% of GetStored time
Object access takes 641.95% of SQL time
Object access takes 1686.
0
0 106
文章 姚 鑫 · 八月 5, 2024 2m read

第一章 修改 Web 客户端

修改 Web 客户端

生成 Web 客户端类后,通常不需要编辑该类。相反,需要编写代码来创建该类的实例并提供客户端错误处理。本主题讨论了微调 Web 客户端的各种方法,可以通过修改 Web 客户端实例或(不太常见)修改生成的类来实现。

注意:不要创建生成的 Web 客户端类的子类。编译器不会生成正常运行所需的支持类,因此子类将无法使用。

禁用 Web 客户端的 Keep-Alive

默认情况下,如果重复使用 Web 客户端实例来发送多条请求消息,IRIS 会在一次 HTTP 传输中发送所有消息(使用 HTTP 1.1 保持活动连接)。具体来说,IRIS 保持 TCP/IP 套接字打开,这样 IRIS 就无需关闭并重新打开它。要禁用此保持活动行为,请执行以下操作之一:

  • 终止 Web 客户端实例并创建并使用一个新的。
  • 发送第一条消息后,将客户端的 HttpRequest.SocketTimeout 属性设置为 0。例如:
Set client.HttpRequest.SocketTimeout=0

注意:如果正在使用 WS-ReliableMessaging 并使用 SSL/TLSWeb 服务通信,请不要禁用保持活动。有关 WS-ReliableMessaging 的信息,请参阅保护 Web 服务。

0
0 94
文章 YuCheng Hu · 八月 1, 2024 3m read

针对 InterSystems IRIS 数据库的一些基本概念。

InterSystems IRIS 是什么

InterSystems IRIS 是基于 Caché/M 语言开发的一个数据库,这个数据库被大量使用在医疗系统中,也是北美地区医疗系统病历和文件管理中默认使用的事实标准。

Caché/M 是什么

Caché/M 是 MUMPS 程序语言 开发的数据库,Caché/M 提供了代码接口,可以直接使用 Caché/M 对数据库来进行操作。

Caché 是一个法语单词,但是又非常容易和英语使用的 Cache 搞混,所以大部分时候使用的是 Caché/M 来表达。

M 表达的意思是 Mumps 程序语言,简称 M 语言,Caché 使用 M 语言构建了不少函数。

InterSystems IRIS 不是开源数据库

因为涉及到医疗系统数据的使用,所以 InterSystems IRIS 并不是一个开源的数据库,你可以使用下面的链接:Evaluate InterSystems Products 8 来下载评估版本。

本文就是根据下载的链接来进行 Windows 安装的教程。

上面的页面在下载之前,你需要进行注册,并且提供你的信息。

双击运行

当下载完成后,可以双击运行安装程序。

我们会看到下面的安装界面:

InterSystems-IRIS-Windows-Install-01

同意许可协议后,单击下一步继续安装。

配置实例名

我们在这里使用默认的就可以,通常使用的 IRIS。

InterSystems-IRIS-Windows-Install-02

0
0 422
文章 Hao Ma · 七月 29, 2024 2m read

转发自Eduard Lebedyu的原文

在本系列文章中,我将介绍并讨论使用 InterSystems 技术和 GitLab 进行软件开发的几种可行方法。我将涉及以下主题:

1
0 201
文章 姚 鑫 · 七月 27, 2024 1m read

第五章 控制 xsi:type 属性的使用

控制 xsi:type 属性的使用

默认情况下, SOAP 消息仅包含顶级类型的 xsi:type 属性。例如:

<?xml version="1.0" encoding="UTF-8" ?>
...
<types:GetPersonResponse>
<GetPersonResult href="#id1" />
</types:GetPersonResponse>
<types:Person id="id1" xsi:type="types:Person">
<Name>Yeats,Clint C.</Name>
<DOB>1944-12-04</DOB>
</types:Person>  
...

在这些示例中,已添加换行符以提高可读性。要将此属性用于 SOAP 消息中的所有类型,请将 OUTPUTTYPEATTRIBUTE 参数或 OutputTypeAttribute 属性设置为 1。相同的输出将如下所示:

<?xml version="1.
0
0 81
文章 Michael Lei · 七月 25, 2024 1m read

InterSystems 常见问题FAQ 

要编译包含映射修饰符的类rountine,请指定编译器修饰符“/mapped=1”或“/mapped”。例如,执行以下操作:

[示例 1] 获取类列表并编译

 do $System.OBJ.GetClassList(.list,"/mapped")
 // build your classes starting from .list
 do $System.OBJ.Compile(.list) 

[示例 2] 编译所有类 

 do $system.OBJ.CompileAll("/mapped") 
0
0 134
文章 光辉 赵 · 七月 23, 2024 6m read

FHIR是标准,是规范,使用FHIR使大家可以使用同一种语言、语义进行交流,名称、API都是统一的,只要符合FHIR标准,任何系统都可交互。对业务开发者来说,大部分接口交互的定义交给FHIR来处理,效率大大提高。

1
0 204
文章 Michael Lei · 七月 18, 2024 2m read

InterSystems 常见问题系列

使用 ErrorList 查询 SYS.ApplicationError 类.

  • 注 1: 在 %SYS 命名空间中运行.
  • 注 2: 这是个非存储的utility, 所以我们用 %ResultSet 类而不用 %SQL.Statement.

执行命令的例子如下.

USER>set $namespace="%SYS"   //equal to zn "%SYS"
%SYS>set rset=##class(%ResultSet).%New()

%SYS>set rset.ClassName="SYS.ApplicationError"
%SYS>set rset.QueryName="ErrorList"
// The first argument of the query is the namespace name, the second argument is the date (in MM/DD/YYYY format).
%SYS>do rset.Execute("USER","08/17/2020")

// To display the results on the screen, execute the %Display() method.
%SYS>do rset.
0
0 156
文章 Michael Lei · 七月 18, 2024 1m read

InterSystems 常见问题系列

可以通过 TRY-CATCH 来完成:

 #dim ex As %Exception.AbstractException
 TRY {
    //Code that causes an error
  }
  CATCH ex {
     do ex.Log()
  }

如果用了 ^%ETN, 从BACK 接入点 (BACK^%ETN)处调用.

请参考另外一篇文章: 如何使用命令获得应用错误 (^ERRORS)

0
0 148
文章 Hao Ma · 三月 25, 2021 8m read

关键字:PyODBC,unixODBC,IRIS,IntegratedML,Jupyter Notebook,Python 3

 

目的

几个月前,我简单谈到了关于“将 Python JDBC 连接到 IRIS”的话题。我后来频繁提起它, 因此决定再写一篇 5 分钟的笔记,说明如何“将 Python ODBC 连接到 IRIS”。

在 Windows 客户端中通常很容易设置 ODBC 和 PyODBC,不过我每次在 Linux/Unix 风格的服务器中设置 unixODBC 和 PyODBC 客户端时,都会遇到一些麻烦。

有没有一种简单连贯的方法,可以不安装任何 IRIS,在原版 Linux 客户端中让 PyODBC/unixODBC 针对远程 IRIS 服务器运行?

 

范围

最近,我花了点时间研究如何在 Linux Docker 环境的 Jupyter Notebook 中从头开始让一个 PyODBC 演示运行起来, 记录下这篇稍微有些繁琐的笔记,以供日后快速参考。  

范围内: 

这篇笔记将涉及以下组件:

  • PyODBC over unixODBC 
  • 安装了 TensorFlow 2.2 和 Python 3 的 Jupyter Notebook 服务器
  • 带有 IntegratedML 的 IRIS2020.3 CE 服务器,包括示例测试数据。
  • 1
    0 519