【问题标题】:Using credentials from Db2 (Warehouse) on Cloud to initialize flask-sqlalchemy使用来自 Db2 (Warehouse) on Cloud 的凭证来初始化 flask-sqlalchemy
【发布时间】:2019-11-20 10:23:00
【问题描述】:

在带有flask-sqlalchemy 的 Flask 应用程序中,我试图通过将 SQLALCHEMY_DATABASE_URI 设置为服务凭证中提供的部分之一来初始化与 Db2 Warehouse on Cloud 的连接。过去,使用 uri 组件效果很好,但我的新服务只有 SSL 连接。

app.config['SQLALCHEMY_DATABASE_URI']=dbInfo['uri']

这会导致连接错误

文件“/home/vcap/deps/0/python/lib/python3.6/site-packages/ibm_db_dbi.py”,第 592 行,在连接中
conn = ibm_db.connect(dsn, '', '', conn_options)
异常:[IBM][CLI Driver] SQL30081N 检测到通信错误。正在使用的通信协议:“TCP/IP”。正在使用的通信 API:“SOCKETS”。检测到错误的位置:“52.117.199.197”。检测错误的通信功能:“recv”。协议特定错误代码:“104”、“*”、“0”。 SQLSTATE=08001 SQLCODE=-30081 在处理上述异常的过程中,又出现了一个异常:

驱动程序似乎不接受 URI 字符串中指定的 ssl=true 选项。我应该使用服务凭证的哪些部分?我需要手动构建 URI 字符串吗?

【问题讨论】:

    标签: python ssl db2 ibm-cloud flask-sqlalchemy


    【解决方案1】:

    由于解决方法,这只是部分答案。我正在使用服务凭据中的端口信息来修改连接 URI:

    if dbInfo['port']==50001:
        # if we are on the SSL port, add additional parameter for the driver
        app.config['SQLALCHEMY_DATABASE_URI']=dbInfo['uri']+"Security=SSL;"
    else:
        app.config['SQLALCHEMY_DATABASE_URI']=dbInfo['uri']
    

    通过将 Security=SSL 添加到 uri,驱动程序获取 SSL 上的信息并使用正确的设置连接到 Db2。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多