Ошибка генерации ConfigParser pyodc’Недопустимое имя пользователя (12) (SQLDriverConnect)

#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 вместо точек с запятой стоят запятые.