我正在编写一个需要访问SAS数据的程序。我已经下载了SAS的ODBC驱动程序并安装了它们,但我需要能够以编程方式动态创建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')
但它会弹出SAS ODBC配置对话框,设置数据源名称,并等待用户输入信息并关闭对话框。我怎么能避免这种情况?
答案 0 :(得分:3)
为了获得对SAS数据的ODBC访问,您需要连接到正在运行的某种类型的SAS会话;您无法使用SAS ODBC驱动程序直接访问SAS数据表文件。
请参阅SAS ODBC drivers guide,“我需要什么软件?”部分。
您的问题并未说明您正在尝试通过正在运行的SAS产品访问SAS数据。 SAS ODBC驱动程序指南应该告诉您如何根据要进行连接的SAS产品设置连接。
答案 1 :(得分:0)
我知道zilch关于SAS,但用于在ODBC中动态连接数据库的函数是SQLDriverConnect。您不需要(或想要)添加DSN,只需安装驱动程序即可。