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 的版本是多少?您是否可以使用普通 pythonimport 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 未连接到数据库 - 抛出“找不到模块”的主要内容,如果未能解决你的问题,请参考以下文章
Spring GCP 服务未连接到 Cloud SQL 数据库