#python #configparser
#python #configparser
Вопрос:
Извините, я новичок в Python и пытаюсь работать с модулем ConfigParser. Я пытаюсь подключить netezza к python через конфигурационный файл.Я получаю сообщение об ошибке «недопустимый пользователь», которое неверно, поскольку я подтвердил идентификатор пользователя и пароль. Соединение, упомянутое в приведенном ниже формате, работает нормально, если я использую его непосредственно в скрипте, а не с помощью модуля ConfigParser
conn = pyodbc.connect("DRIVER=
{NetezzaSQL};SERVER=netezzadev02.xxx.com;
PORT=5460;DATABASE=EDWxx;
UID=anxxx;PWD=kkkkk;")
Но когда я использую configparser, ini-файл и начинаю создавать приведенный ниже код, я получаю ошибку ‘ pyodbc.OperationalError: (‘08001′, u'[08001] Недопустимое имя пользователя (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)
Добавление ini-файла в основной скрипт Python для загрузки учетных данных 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)
Пожалуйста, помогите мне устранить эту ошибку или укажите, какую ошибку я делаю.
Ответ №1:
Возможно, вы захотите попробовать встроенную функцию get (section, option) configparser, поскольку я не уверен, что способ, которым вы ее реализовали, будет работать.
Итак, вместо config['NETEZZA'['DRIVER']
выполнения config.get('NETEZZA','DRIVER')
Кроме того, я не знаю, осознали ли вы это, но здесь вам не хватает ‘]’ drv=config['NETEZZA'
Ответ №2:
Я понимаю, что это может быть немного поздно, но если кто-нибудь снова столкнется с этой ошибкой: это просто форматирование строки, которая передается в connect
функцию pyodbc. В моем случае там было несколько дополнительных пробелов, которые все испортили. В вашем случае это потому, что между PORT
, UID
и PWD
вместо точек с запятой стоят запятые.