【问题标题】:How do I connect to a Db2 Event Store database from a Python program?如何从 Python 程序连接到 Db2 Event Store 数据库?
【发布时间】:2019-08-21 17:04:05
【问题描述】:

我正在尝试从 python 程序连接到 Db2 Event Store 数据库 2.0 版,但我遇到了 SSL 配置问题。在 1.1.3 版本中,我曾经设置 ConfigurationReader.setSSLEnabled(True) 并且足以让我连接,我如何在 2.0 版本中执行相同操作?

【问题讨论】:

    标签: python ssl db2 ibm-event-store


    【解决方案1】:

    我没有丰富的 EventStore1.1.3 经验。但在 EventStore 2.0 中,您将需要提供一些其他配置。

    EventStore 有详细的远程应用环境设置指南

    https://www.ibm.com/support/knowledgecenter/SSGNPV_2.0.0/develop/dev-guide.html

    但我会为你总结一下。您需要设置以下步骤:

    1/ 下载spark 2.2.1或2.3.2,然后设置SPARK_HOME shell env var。

    export  SPARK_HOME=<SPARK_DIR>
    

    2/ 下载在 Maven 上开源的 EventStore java 客户端 jar ibm-db2-eventstore-client-n.n.n.jar。将 jar 移动到 spark jars 目录

    mv <ibm-db2-eventstore-client-n.n.n.jar> $SPARK_HOME/jars
    

    3/ 下载EventStore Python包,并导出包路径

    export PYTHONPATH="${PYTHONPATH}:<Python_package_location>
    

    4/ 准备包含 db2 EventStore 服务器颁发的公共证书的 Java 密钥库。您将需要密钥库及其密码。

    • 如果 EventStore 服务器使用默认 SSL 证书,那么您可以使用 REST API 获取密钥库文件及其密码。见https://www.ibm.com/support/knowledgecenter/SSGNPV_2.0.0/local/REST_API_keystore.html
    • 如果管理员已经为 EventStore 服务器提供了自己的证书,请向管理员索取密钥库和公共证书。 在以下代码片段中,将配置事件存储连接。

    • userid:EventStore 用户的用户名。

    • password:EventStore 用户的密码。
    • keystore_path:包含公共证书的 java keystore 文件的绝对路径。
    • keystore_pwd:密钥库文件的密码。
    
    from eventstore.common import ConfigurationReader
    ​
    ConfigurationReader.setConnectionEndpoints("<JDBC_CONNECTION_ENDPOINT>;<SCALA_CONNECTION_ENDPOINT>")
    
    ConfigurationReader.setEventUser("<userid>")
    
    ConfigurationReader.setEventPassword("<password>")
    ​
    ConfigurationReader.setSslKeyStoreLocation("<keystore_path>")
    ConfigurationReader.setSslKeyStorePassword("<keystore_pwd>")
    
    ConfigurationReader.setSslTrustStoreLocation("<keystore_path>")
    
    ConfigurationReader.setSslTrustStorePassword("<keystore_pwd>")
    
    ConfigurationReader.setClientPluginName("IBMIAMauth")
    
    ConfigurationReader.setClientPlugin(True)
    
    ConfigurationReader.setSSLEnabled(True)
    

    通过以上配置,你应该很高兴。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多