对不起,我是Python的新手,正在尝试使用ConfigParser模块。我正在尝试通过配置文件将netezza连接到python。我收到错误无效的用户,这是不正确的,因为我已经验证了用户名和密码。如果我直接在脚本中而不是使用ConfigParser模块使用以下格式的conn,则可以正常工作
conn = pyodbc.connect("DRIVER=
{NetezzaSQL};SERVER=netezzadev02.xxx.com;
PORT=5460;DATABASE=EDWxx;
UID=anxxx;PWD=kkkkk;")
但是当我使用configparser,ini文件并开始创建以下代码时,出现错误'pyodbc.OperationalError:('08001',u'[08001] Invalid-用户名(12)(SQLDriverConnect)')'。 我在下面解释我的代码。 ---首先创建ini文件
import pyodbc
import configparser
config = configparser.ConfigParser()
config['NETEZZA'] = {'DRIVER': 'NetezzaSQL',
'SERVER': 'netezzadev02.xxx.com',
'DATABASE': 'EDWxx',
'PORT': '5460',
'UID': 'anxxx',
'PWD': 'kkkkk;',
}
with open('db_connect.ini', 'w') as configfile:
config.write(configfile)
在Main Python脚本中添加ini文件以加载netezza日志凭证。
import configparser
print('\nEstablishing DB Connection..........')
config = configparser.ConfigParser()
config.read('db_connect.ini')
constr = 'DRIVER={{{drv}}};SERVER={srv};DATABASE=
{db};PORT={prt},UID={uid},PWD={pwd};'\
.format(drv=config['NETEZZA'['DRIVER'],
srv=config['NETEZZA']['SERVER'],
db=config['NETEZZA']['DATABASE'],
prt=config['NETEZZA']['PORT'],
uid=config['NETEZZA']['UID'],
pwd=config['NETEZZA']['PWD'])
conn = pyodbc.connect(constr)
请帮助我解决此错误或指出我在做什么错误。
答案 0 :(得分:0)
您可能要尝试configparser的内置get(section,option)功能,因为我不确定实现它的方式是否可行。
因此,不是config['NETEZZA'['DRIVER']
做config.get('NETEZZA','DRIVER')
此外,我不知道您是否意识到了这一点,但是您在drv=config['NETEZZA'
答案 1 :(得分:0)
我意识到这可能有点晚了,但是如果有人再次遇到此错误:这只是传递给 pyodbc 的 connect
函数的字符串格式有关。就我而言,那里有一些额外的空间把事情搞砸了。就您而言,这是因为 PORT
、UID
和 PWD
之间有逗号而不是分号。