Я пишу программу, которая должна получить доступ к данным SAS. Я загрузил драйверы ODBC для SAS и установил их, но я должен смочь создать соединения ODBC на лету, программно. Следующий код (в Python) кажется, что должен работать:
import ctypes
ODBC_ADD_DSN = 1
def add_dsn(name, driver, **kw):
nul, attrib = chr(0), []
kw['DSN'] = name
for attr, val in kw.iteritems():
attrib.append('%s=%s' % (attr, val))
return ctypes.windll.ODBCCP32.SQLConfigDataSource(0, ODBC_ADD_DSN, driver, nul.join(attrib)) == 1
print add_dsn('SAS Test', 'SAS', description = 'Testing SAS')
Но это открывается диалоговое окно конфигурации ODBC SAS, устанавливает имя источника данных и ожидает пользователя, чтобы ввести информацию и отклонить диалоговое окно. Как я могу избежать этого?
Я ничего не знаю о SAS, но для подключения к базе данных на лету в ODBC используется функция SQLDriverConnect . Вам не нужно (или не хотите) добавлять DSN, вам просто нужно установить драйверы.
Чтобы получить доступ ODBC к данным SAS, вам необходимо подключиться к какому-либо запущенному сеансу SAS; вы не можете получить доступ к файлам таблиц данных SAS напрямую с помощью драйверов SAS ODBC.
См. руководство по драйверам SAS ODBC , раздел «Какое программное обеспечение мне нужно?».
В вашем вопросе не говорится, что вы пытаетесь получить доступ к данным SAS через работающий продукт SAS. Руководство по драйверам SAS ODBC должно рассказать вам, как установить соединение на основе продукта SAS, через который вы будете устанавливать соединение.