【发布时间】:2017-04-03 16:12:15
【问题描述】:
所以我似乎无法让 PostgreSQL 的“.pgpass”功能在 Python 中使用 unixODBC/pyodbc 工作。
我有一个可用的 ~/.pgpass 文件,由命令行工具 psql 确认,并且我有一个可用的 odbc.ini 条目,由我的 Python 脚本确认。这里的问题是我希望脚本通过 ~/.pgpass 文件获取密码,因为我不想在 DSN 条目和 odbc.ini 条目中指定密码(两者都有效) .
我尝试将 pg_hba.conf 中的本地和主机条目设置为各种值,包括 md5、密码、身份、对等点和信任。信任当然有效,但这将安全性置于我不满意的水平,因为它实际上并没有进行任何身份验证。
有人让这个工作吗?以下是一些相关条目:
pg_hba.conf
local all all md5
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
host all all 0.0.0.0/0 md5
host all all ::/0 md5
odbc.ini
[MyEntry]
Driver = PostgreSQL
Server = myServer
Port = 5432
Database = myDB
Username = myUser
Trace = Yes
.pgpass
myServer:5432:*:myUser:myPassword
【问题讨论】:
-
有什么理由不使用 psycopg2 代替吗?
-
因为我还连接到 MSSQL 和 MySQL 数据库。使用 pyodbc 为我提供了一个连接到我想要连接的任何数据库的单一界面。
-
这绝对是公平的。我也连接到所有三个,但使用单独的驱动程序(psycopg2、pyodbc、mysql-connector-python)以提高性能和简单性。它确实有点令人困惑,因为它们具有不同的参数语法等。
标签: python postgresql pyodbc unixodbc