query-exporter 未连接到数据库 - 抛出“找不到模块”

Posted

技术标签:

【中文标题】query-exporter 未连接到数据库 - 抛出“找不到模块”【英文标题】:query-exporter doesn't connect to the Database - throws "module not found" 【发布时间】:2021-12-17 14:31:38 【问题描述】:

我在 IBM DB2 数据库中有一组数据,需要用作度量所需的数据。为了完成这项工作,我正在尝试从 SQL 中使用 python 的导出普罗米修斯指标 - 参考这里:https://pypi.org/project/query-exporter/

为此,我尝试使用 pip3 install ibm_db 安装 ibm_db 模块

当我在 cmdline 中列出我拥有的模块时,我看到它可用:

下面是我的 config.yaml,它将建立连接以轮询数据库中的数据,以便将指标导出到 Prometheus。

在上面对于dsn,我也试过了:

db2://user:pass@host[:port]/database , db2+ibm_db://user:pass@host[:port]/database

但最终得到了相同的结果,如下所示。

现在我正在尝试使用以下命令执行查询导出器模块:

query-exporter ~/py-query-exporter/config.yaml

但最终出现以下错误:

有人可以帮忙看看为什么 ibm_db 模块没有被识别吗? - 我不知道这个问题在不同的数据库模块中是否更广泛另外,我的python版本是:

vijayleom@Vijays-MacBook-Pro ~ % python -V

Python 3.8.11

【问题讨论】:

您使用的是哪个 dbms? 尝试连接到 IBM DB2 (请编辑您的问题,不要使用 cmets 添加应该在问题中的事实)。 MacOS 的版本是多少?您是否可以使用普通 python import ibm_db 后跟一个带有有效连接字符串的连接(只是为了定位问题区域)? 按建议添加到问题本身。 Mac 版本为 11.5.2(BigSur OS)。不,即使在那里它也失败了。 >>> import ibm_db Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'ibm_db' 感谢对这个问题投了反对票的人,请注意这是一个有效的场景,任何人都可能发生这种情况。当有人进来进行类似搜索以找到答案时,这可能会产生误导。谢谢! 【参考方案1】:

始终在问题中添加相关事实,而不是作为 cmets,因为 cmets 不可搜索并且很容易被遗漏。

如果您不能import ibm_db 并成功运行ibm_db.connect(....),那么任何工具(例如 SQLAlchemy 或使用 SQLAlchemy 的包,如您的查询导出器)都将不起作用 - 因为 ibm_db 支持它们。

如果这是一个 conda 环境,您应该使用 conda 来安装 ibm_db,因为 conda 比 pip 更全面地检查依赖关系。有时还需要升级 pip 版本(不管 conda 是什么)。

除此之外,MacOS 上的 ibm_db 存在一些已知问题,但目前大多数都有解决方法。

两个可能特别相关,与 c 库的兼容性有关(conda install ibm_db 应该找到),有时需要在运行 python 之前导出环境变量 DYLD_LIBRARY_PATH 的特定值。

找到包含 clidriver 的目录,默认情况下它与 ibm_db 模块一起安装。默认情况下,它将位于您的 python 环境的 site-packages 目录中(您可以使用 pip3 show ibm_db 查看目录名称)。获取 clidriver 的完全限定目录名称并将 /lib 附加到它,然后使用该值(例如 your_clidriver_path/lib ,因此:

export DYLD_LIBRARY_PATH=your_clidriver_path/lib:$DYLD_LIBRARY_PATH 在你运行你的 python 代码之前。

当您无法获得解决方法时,请尝试在 github-issues 页面上为 python ibm_db 搜索匹配的问题和解决方案,然后在 https://github.com/ibmdb/python-ibmdb/issues 为开发人员开票

【讨论】:

我有问题本身的细节......希望它有必要的信息。让我知道您在问题描述中具体寻找什么。

以上是关于query-exporter 未连接到数据库 - 抛出“找不到模块”的主要内容,如果未能解决你的问题,请参考以下文章

元数据库未连接到 MySQL(docker 容器)

Visual Studio,数据库项目未连接到数据库

Spring GCP 服务未连接到 Cloud SQL 数据库

JDBC未连接到Web服务中的数据库

Oracle Developer's guide 10g 未连接到服务器

本地 Laravel 环境未连接到 AWS RDS 数据库