Я пытаюсь добавить новый источник данных ODBC в python и нашел этот код онлайн, который, кажется, работает с python 2 (как упоминали другие, но я не пробовал), но не работает с python 3 (я использую 3.6) , Код выполняется без ошибок, но не добавляет новый DSN в систему (всегда возвращает 0).
Я искал вокруг и нашел, что некоторые люди упоминают, что это может быть связано с проблемой кодирования, поэтому я попытался изменить часть атрибута на байты (nul.join (attrib)) с другой кодировкой, но ни одна из них не работает.
Вот часть кода:
ODBC_ADD_DSN = 1 # Add data source, user DSN only
ODBC_CONFIG_DSN = 2 # Configure (edit) data source
ODBC_REMOVE_DSN = 3 # Remove data source
ODBC_ADD_SYS_DSN = 4 # add a system DSN
ODBC_CONFIG_SYS_DSN = 5 # Configure a system DSN
ODBC_REMOVE_SYS_DSN = 6 # remove a system DSN
def add_dsn(name, driver, **kw):
nul, attrib = '', []
kw['DSN'] = name
for attr, val in kw.items():
attrib.append('%s=%s' % (attr, val))
return ctypes.windll.ODBCCP32.SQLConfigDataSource(0, ODBC_ADD_DSN, driver, nul.join(attrib))
#
if __name__ == "__main__":
print (add_dsn('test', 'SQL Server', server='(local)', description = 'Testing'))
Может ли кто-нибудь помочь с решением этой проблемы или предоставить решение для добавления новых источников данных ODBC с использованием Python. Спасибо!