使用Cloud上Db2(仓库)中的凭据初始化flask-sqlalchemy

在带有flask-sqlalchemyflask应用程序中,我尝试通过将 SQLALCHEMY_DATABASE_URI 设置为服务凭据中提供的部分之一来初始化到Db2 Warehouse on Cloud的连接。过去,使用 uri 组件可以正常工作,但是我的新服务仅具有SSL连接。

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

这会导致连接错误

  

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

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

jinguobin 回答:使用Cloud上Db2(仓库)中的凭据初始化flask-sqlalchemy

由于变通办法,这只是部分答案。我正在使用服务凭证中的端口信息来修改连接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']

通过在{strong> uri 中添加Security=SSL,驱动程序将获取有关SSL的信息,并使用正确的设置连接到Db2。

本文链接:https://www.f2er.com/3066857.html

大家都在问