簡體   English   中英

使用來自雲上 Db2(倉庫)的憑據來初始化 flask-sqlalchemy

[英]Using credentials from Db2 (Warehouse) on Cloud to initialize flask-sqlalchemy

在帶有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”。 通信 function 檢測到錯誤:“recv”。 協議特定錯誤代碼:“104”、“*”、“0”。 SQLSTATE=08001 SQLCODE=-30081 在處理上述異常的過程中,又出現了一個異常:

似乎驅動程序不接受 URI 字符串中指定的ssl=true選項。 我應該使用服務憑證的哪些部分? 我需要手動構建 URI 字符串嗎?

由於解決方法,這只是部分答案。 我正在使用服務憑據中的端口信息來修改連接 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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM