1

我一直在尝试使用 ibm_db_dbi 连接数据库并通过 pandas.read_sql 读取表。

创建连接后,我使用 set_current_schema('mySchema') 为 myConnection 设置当前架构,这样我就不需要在每个表前面指定架构。

但是,当我使用 pd.read_sql(sql, myConnection) 读取表时,它总是使用用户名作为架构,而不是我指定的架构。

有没有办法解决它?

任何帮助,将不胜感激。

谢谢,

特里

import ibm_db_dbi as db2
import pandas as pd

myConnection = db2.connect("DATABASE=name;HOSTNAME=host;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password;",  " ", " ")

myConnection.set_current_schema('mySchema')

sql = ('SELECT NAME FROM EMPLOYEE')

names = pd.read_sql(sql, myConnection)
4

1 回答 1

2

您可以使用扩展连接字符串;CURRENTSCHEMA=MYSCHEMA;

这适用于我的 pandas 和 Db2。

例子

myConnection = db2.connect("DATABASE=name;HOSTNAME=host;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password;CURRENTSCHEMA=MYSCHEMA;",  " ", " ")

对于使用 DSN(而不是脚本中的连接字符串)的人,您可以将此附加信息作为数据库参数(和 DSN 参数)包含在db2dsdriver.cfg文件中。

于 2020-06-18T05:57:57.137 回答