在基于 InterSystems IRIS 开发 Python 应用时,你很快就会发现存在多种执行上下文:
- 由 IRIS 直接启动的 Embedded Python;
- 加载本地 IRIS 安装中 Embedded Python 库的常规
python3进程; - 通过官方原生驱动连接 IRIS 的外部 Python 应用。
这三种场景都非常有用,但在导入机制、系统配置、对象 API 以及 SQL 访问方面,它们的行为并不完全一致。iris-embedded-python-wrapper项目提供了一个稳定的 Python 门面(Facade),旨在减少这些差异,并提供一个统一的入口点:import iris。
存在的问题
在一个围绕 IRIS 构建的 Python 项目中,同一份代码可能需要在多种环境中运行:
- 在 IRIS 终端中,通过
iris python iris或iris session iris后输入:py; - 通过 启动的本地 Python 脚本;
- 连接到 IRIS 实例的远程 Python 服务。
如果没有抽象层,许多细节往往就需要分别处理:
- Embedded Python 的
iris模块只有在 IRIS 运行时被正确加载时才可用; - 原生 SDK 同样暴露了一个 包,这可能导致冲突或产生歧义的导入;
- 和 DB-API 连接在嵌入式模式和
