Pyodbc - “未找到数据源名称,且未指定默认驱动程序" [英] Pyodbc - "Data source name not found, and no default driver specified"
问题描述
我在使用 pyodbc
时遇到问题.我的 Linux Mint 14 上安装了 unixodbc
、unixodbc-dev
、odbc-postgresql
、pyodbc
软件包.我失去了自己找到解决方案的希望,任何帮助表示感谢.请参阅下面的详细信息:
跑步:
<预><代码>>>>导入pyodbc>>>conn = pyodbc.connect("DRIVER={PostgreSQL};SERVER=localhost;DATABASE=test;USER=openerp;OPTION=3;")给我:
<预><代码>>>>pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager] 未找到数据源名称,并且未指定默认驱动程序 (0) (SQLDriverConnect)')# odbcinst -j 给出:
unixODBC 2.2.14驱动程序…………:/etc/odbcinst.ini系统数据源:/etc/odbc.ini文件数据源..:/etc/ODBCDataSources用户数据源..:/home/atman/.odbc.iniSQLULEN 大小.......: 4SQLLEN 大小........: 4SQLSETPOSIROW 大小.:2
这让我觉得存在 unixodbc
配置问题.这是我的 unixodbc
配置文件内容:
文件 /etc/odbcinst.ini
:
[PostgreSQL ANSI]说明 = PostgreSQL ODBC 驱动程序(ANSI 版本)驱动程序 = psqlodbca.so设置 = libodbcpsqlS.so调试 = 0通讯日志 = 1使用次数 = 2[PostgreSQL Unicode]说明 = PostgreSQL ODBC 驱动程序(Unicode 版本)驱动程序 = psqlodbcw.so设置 = libodbcpsqlS.so调试 = 0通讯日志 = 1使用次数 = 2
文件 /etc/odbc.ini
:
[PostgreSQL 测试]描述 = PostgreSQL驱动程序 = PostgreSQL ANSI跟踪 = 否TraceFile =/tmp/psqlodbc.log数据库 = 模板 1服务器名 = 本地主机用户名 =密码 =端口 =只读 = 是RowVersioning = 否ShowSystemTables = 否ShowOidColumn = 否FakeOidIndex = 否连接设置 =
文件 ~/.odbc.ini
:
[默认]驱动程序 = PostgreSQL[PostgreSQL]描述 = 测试 Postgres驱动程序 = PostgreSQL跟踪 = 是跟踪文件 = sql.log数据库 = 昵称服务器名 = 本地主机用户名 =密码 =端口 = 5432协议 = 6.4只读 = 否RowVersioning = 否ShowSystemTables = 否ShowOidColumn = 否FakeOidIndex = 否连接设置 =
我相信您的问题的答案是在您的 ~/.odbc.ini 文件中您说要使用驱动程序 PostgreSQL
-但您尚未在/etc/odbcinst.ini 文件中定义该驱动程序.尝试将 PostgreSQL
更改为 PostgreSQL ANSI
或 PostgreSQL Unicode
(两者都在/etc/odbcinst.ini 中定义).
I have trouble getting pyodbc
work. I have unixodbc
, unixodbc-dev
, odbc-postgresql
, pyodbc
packages installed on my Linux Mint 14.
I am losing hope to find solution on my own, any help appreciated. See details below:
Running:
>>> import pyodbc
>>> conn = pyodbc.connect("DRIVER={PostgreSQL};SERVER=localhost;DATABASE=test;USER=openerp;OPTION=3;")
Gives me:
>>> pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)')
# odbcinst -j gives:
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
Which makes me think there is a unixodbc
configuration problem.
Here are my unixodbc
config file contents:
File /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
File /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 =
File ~/.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 =
I believe the answer to your problem is that in your ~/.odbc.ini file you are saying to use driver PostgreSQL
- but you have not defined that driver in your /etc/odbcinst.ini file. Try changing PostgreSQL
to PostgreSQL ANSI
or PostgreSQL Unicode
(both of which are defined in /etc/odbcinst.ini).
这篇关于Pyodbc - “未找到数据源名称,且未指定默认驱动程序"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!