python - pyodbc - "Data source name not found, and no default driver specified"

标签 python postgresql python-2.7 pyodbc unixodbc

我无法让 pyodbc 工作。我在我的 Linux Mint 14 上安装了 unixodbcunixodbc-devodbc-postgresqlpyodbc 包。 我对自己找到解决方案失去了希望,感谢任何帮助。请参阅下面的详细信息:

运行:

>>> import pyodbc
>>> conn = pyodbc.connect("DRIVER={PostgreSQL};SERVER=localhost;DATABASE=test;USER=openerp;OPTION=3;")

给我:

>>> pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)')

# odbcinst -j 给出:

unixODBC 2.2.14
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/atman/.odbc.ini
SQLULEN Size.......: 4
SQLLEN Size........: 4
SQLSETPOSIROW Size.: 2

这让我觉得存在 unixodbc 配置问题。 这是我的 unixodbc 配置文件内容:

文件 /etc/odbcinst.ini:

[PostgreSQL ANSI]
Description     = PostgreSQL ODBC driver (ANSI version)
Driver      = psqlodbca.so
Setup       = libodbcpsqlS.so
Debug       = 0
CommLog     = 1
UsageCount      = 2

[PostgreSQL Unicode]
Description     = PostgreSQL ODBC driver (Unicode version)
Driver      = psqlodbcw.so
Setup       = libodbcpsqlS.so
Debug       = 0
CommLog     = 1
UsageCount      = 2

文件 /etc/odbc.ini :

[PostgreSQL test]
Description         = PostgreSQL 
Driver              = PostgreSQL ANSI
Trace               = No
TraceFile           = /tmp/psqlodbc.log
Database            = template1
Servername          = localhost
UserName            =
Password            =
Port                =
ReadOnly            = Yes
RowVersioning       = No
ShowSystemTables    = No
ShowOidColumn       = No
FakeOidIndex        = No
ConnSettings        =

文件 ~/.odbc.ini:

[DEFAULT]
Driver = PostgreSQL

[PostgreSQL]
Description         = Test to Postgres
Driver              = PostgreSQL
Trace               = Yes
TraceFile           = sql.log
Database            = nick
Servername          = localhost
UserName            =
Password            =
Port                = 5432
Protocol            = 6.4
ReadOnly            = No
RowVersioning       = No
ShowSystemTables    = No
ShowOidColumn       = No
FakeOidIndex        = No
ConnSettings        =

最佳答案

我相信您的问题的答案是在您的 ~/.odbc.ini 文件中您说要使用驱动程序 PostgreSQL - 但您没有在/etc/odbcinst 中定义该驱动程序。 ini文件。尝试将 PostgreSQL 更改为 PostgreSQL ANSIPostgreSQL Unicode(两者都在/etc/odbcinst.ini 中定义)。

关于python - pyodbc - "Data source name not found, and no default driver specified",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16280304/

相关文章:

html - 使用 Python-Flask 使用来自 postgresql 数据库的数据填充 html 下拉列表

python - 如何计算每次迭代后跳过一个元素的每三个连续元素的平均值

python - Pandas :groupby 使用 numba 申请

Python - 将整数字符串转换为 Ascii

Python - 将 pgqueryobject 转换为字符串

sql-server - 将位数据类型数据从 SQL Server 导出到 PostgreSQL

python - 从 python sqlite 异常获取更多信息

python - 使用 python 遍历文件时忽略错误引发

python - Python 类继承的奇怪问题

python - 元组对象没有属性追加(python)