如何获取 Linux 服务器中安装的 Postgres ODBC 驱动程序版本?
How to grab Postgres ODBC Driver version installed in a Linux Server?
我试图通过在 /etc/odbcinst.ini
文件中列出驱动程序来获取安装在 linux 服务器中的 odbc 驱动程序版本,但我注意到 DriverODBCVer
参数不可用对于 Postgres 驱动程序
[PostgreSQL]
Description =ODBC for PostgreSQL
Driver=/usr/lib/psqlodbcw.so
Setup=/usr/lib/libodbcpsqlS.so
Driver64=/usr/lib64/psqlodbcw.so
Setup64=/usr/lib64/libodbcpsqlS.so
FileUsage=1
我已经尝试使用 lsmod 并从 /proc/modules 中获取,但没有成功。我基本上尝试了与此相关的所有主题
有什么方法可以获取安装在 linux 服务器上并且当前配置为默认使用的 postgres ODBC 驱动程序?为了提供一些上下文,其中一个进程(returns 驱动程序信息)为我们提供了与应该安装的版本不同的版本。
谢谢!
似乎唯一的方法是编写一个 C 程序,用 SQL_DRIVER_VER
调用 SQLGetInfo
函数作为 InfoType
。
这是一个适合我的最小程序:
#include <sql.h>
#include <sqlext.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char **argv)
{
SQLHENV henv;
SQLHDBC hdbc;
char version[25];
SQLSMALLINT version_size;
(void) SQLAllocHandle(SQL_HANDLE_ENV,
SQL_NULL_HANDLE,
&henv);
(void) SQLSetEnvAttr(henv,
SQL_ATTR_ODBC_VERSION,
(SQLPOINTER)SQL_OV_ODBC3,
0);
(void) SQLAllocHandle(SQL_HANDLE_DBC,
henv,
&hdbc);
(void) SQLGetInfo(hdbc,
SQL_DRIVER_VER,
&version,
25,
&version_size);
write(1, version, strlen(version));
write(1, "\n", 1);
return 0;
}
这是我构建和 运行 它的方式:
> gcc -Wall -o odbcversion -Wl,-rpath,/usr/pgsql-14/lib odbcversion.c /usr/pgsql-14/lib/psqlodbc.so
> ./odbcversion
13.02.0000
在 Python 中,我们可以使用 pyodbc 的 .getinfo() 方法来检索驱动程序版本(以及许多其他内容):
import pyodbc
connection_string = (
"DRIVER=PostgreSQL Unicode(x64);"
"SERVER=192.168.0.199;"
"UID=scott;PWD=tiger;"
"DATABASE=test;"
)
cnxn = pyodbc.connect(connection_string)
print(cnxn.getinfo(pyodbc.SQL_DRIVER_VER))
# 13.02.0000
我试图通过在 /etc/odbcinst.ini
文件中列出驱动程序来获取安装在 linux 服务器中的 odbc 驱动程序版本,但我注意到 DriverODBCVer
参数不可用对于 Postgres 驱动程序
[PostgreSQL]
Description =ODBC for PostgreSQL
Driver=/usr/lib/psqlodbcw.so
Setup=/usr/lib/libodbcpsqlS.so
Driver64=/usr/lib64/psqlodbcw.so
Setup64=/usr/lib64/libodbcpsqlS.so
FileUsage=1
我已经尝试使用 lsmod 并从 /proc/modules 中获取,但没有成功。我基本上尝试了与此相关的所有主题
有什么方法可以获取安装在 linux 服务器上并且当前配置为默认使用的 postgres ODBC 驱动程序?为了提供一些上下文,其中一个进程(returns 驱动程序信息)为我们提供了与应该安装的版本不同的版本。
谢谢!
似乎唯一的方法是编写一个 C 程序,用 SQL_DRIVER_VER
调用 SQLGetInfo
函数作为 InfoType
。
这是一个适合我的最小程序:
#include <sql.h>
#include <sqlext.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char **argv)
{
SQLHENV henv;
SQLHDBC hdbc;
char version[25];
SQLSMALLINT version_size;
(void) SQLAllocHandle(SQL_HANDLE_ENV,
SQL_NULL_HANDLE,
&henv);
(void) SQLSetEnvAttr(henv,
SQL_ATTR_ODBC_VERSION,
(SQLPOINTER)SQL_OV_ODBC3,
0);
(void) SQLAllocHandle(SQL_HANDLE_DBC,
henv,
&hdbc);
(void) SQLGetInfo(hdbc,
SQL_DRIVER_VER,
&version,
25,
&version_size);
write(1, version, strlen(version));
write(1, "\n", 1);
return 0;
}
这是我构建和 运行 它的方式:
> gcc -Wall -o odbcversion -Wl,-rpath,/usr/pgsql-14/lib odbcversion.c /usr/pgsql-14/lib/psqlodbc.so
> ./odbcversion
13.02.0000
在 Python 中,我们可以使用 pyodbc 的 .getinfo() 方法来检索驱动程序版本(以及许多其他内容):
import pyodbc
connection_string = (
"DRIVER=PostgreSQL Unicode(x64);"
"SERVER=192.168.0.199;"
"UID=scott;PWD=tiger;"
"DATABASE=test;"
)
cnxn = pyodbc.connect(connection_string)
print(cnxn.getinfo(pyodbc.SQL_DRIVER_VER))
# 13.02.0000