如何判断/指定postgres client / libs psycopg2使用的是哪个版本?

时间:2016-09-02 00:39:14

标签: python postgresql psycopg2

我有一个python程序的psycopg2,但程序运行的计算机安装了两个版本的postgres:在'main'系统中为9.2,在/ opt中为9.5。 postgres DB托管在其他地方,是9.5。 9.2 psql客户端仍然会愉快地连接到9.5 DB,并发出警告。如何判断psycopg2库使用的是哪个版本或postgres,如何强制它使用特定版本?运行SELECT version();似乎返回服务器版本,而我只对客户端版本感兴趣。

2 个答案:

答案 0 :(得分:0)

应该能够通过将9.5客户端二进制文件放在运行python程序的用户的路径的开头来强制它。测试:

export PATH=/opt/<path-to-your-9.5>;$PATH
which psql #ensure the 9.5 one is returned
psql -h <remote-host> -p <remote-port> -U <user> -W -d <dbname> # test even further if you wish

如果您想知道lib,那么您需要查看您的python正在使用的libpq:

[root@pgbuilder cgi-bin]# ldd /usr/lib64/python2.7/site-packages/psycopg2/_psycopg.so | grep libpq
libpq.so.5 => /usr/pgsql-9.5/lib/libpq.so.5 (0x00007fd5f40b7000)

改变你的路径以适应你的&#34; _psycopg.so&#34;位置。

答案 1 :(得分:0)

在psycopg 2.6.x中ldd是要走的路。在2.7中将有一个函数来返回该信息,但它还没有被发布。