首页 > 解决方案 > Python DB2 SSL 连接

问题描述

我一直在使用带有 pandas 的ibm_dbibm_db_dbi从DB2数据库运行 SQL 查询(客户端)。然而,我们公司实施了新的安全标准,我也需要一种方法来保护连接。运行Python3.7DB2 10.5

以下是我当前的连接字符串:

import ibm_db
import ibm_db_dbi
import pandas as pd

driver = 'IBM DB2 ODBC DRIVER'
database = 'DB0001'
hostname = 'my.host.com'
port = '1234'
protocol = 'TCPIP'
uid = 'user'
pwd = 'password'
security = 'SSL'

dsn = (
    f'DRIVER={driver};'
    f'DATABASE={database};'
    f'HOSTNAME={hostname};'
    f'PORT={port};'
    f'PROTOCOL={protocol};'
    f'UID={uid};'
    f'PWD={pwd};'
    f'SECURITY={security};'
)

test_query = 'SELECT 1 FROM SYSIBM.SYSDUMMY1'
conn_engine = ibm_db.connect(dsn, '', '')
db_conn = ibm_db_dbi.Connection(conn_engine)

df = pd.read_sql(test_query, db_conn)

有没有办法为此代码合并 SSL?

标签: pythonpandasssldb2keystore

解决方案


不幸的是,这有点复杂,并且(希望)您的 DBA 可以帮助解决其中的一些问题。

如果您使用的是 Db2 10.5 Fixpack 5(或更高版本)客户端,那么您只需在 DSN 字符串中添加几个参数:

Security=ssl; 
SslServerCertificate=/path/to/file.arm;

您的 DBA 应该能够为您提供 SslServerCertificate 文件(或内容)。

ibm_db如果您将 Db2 客户端与 python ibm_db 包分开安装,那么根据您安装的 Db2 客户端(即为. Db2 客户端)。


推荐阅读