我一直在Python中使用psycopg2在SQL中运行查询。这很简单,我只做以下操作:
conn2 = psycopg2.connect('postgresql://YourUserName:YourPassword@YourHost:5432/YourDatabase')
query = "xxx"
query_output = pd.read_sql_query(query, conn2).drop_duplicates(keep='first')
有可能在VBA中实现类似的简单操作吗?我希望创建一个易于使用的excel插件,这样就可以避免要求用户必须在ODBC驱动程序管理器中设置32位驱动程序。
我正试图在这里开发一个设置:
Dim objDb_con
Dim strSomeValue As String
Set objDb_con = CreateObject("ADODB.Connection")
Set Rsdatatype = CreateObject("ADODB.RecordSet")
glbConnString = "Driver={PostgreSQL UNICODE};Database=XX;port=XX;server=XX;UID=XX;Pwd=XX;"
objDb_con.Open glbConnString
但我得到了错误:
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
环顾四周,这似乎与ODBC驱动程序管理器有关,即使我试图将默认设置为32位,我仍然会收到这个错误。
VBA是否有一种psycopg2风格的替代方案,它很简单,不需要用户设置?
我总是从这个网站提取连接字符串:
https://www.connectionstrings.com/progress/
它们清楚地表明没有内置的。NET库或用于PostGress的OLE DB提供程序。因此,您无法绕过安装驱动程序。你可以打包一个安装程序来自动化这个过程。
如果你安装了ODBC驱动程序,你会使用这样的连接字符串:
标准
仅包括要从系统DSN设置中覆盖的参数
DSN=myDSN;HOST=myServerAddress;DB=myDataBase;UID=myUsername;PWD=myPassword;PORT=2055;
使用长名称的替代方案
仅包括要从系统DSN设置中覆盖的参数
DataSourceName=myDSN;HostName=myServerAddress;Database=myDataBase;LogonID=myUsername;Password=myPassword;PortNumber=2055;