Pyodbc - “未找到数据源名称,且未指定默认驱动程序" [英] Pyodbc - "Data source name not found, and no default driver specified"

查看:37
本文介绍了Pyodbc - “未找到数据源名称,且未指定默认驱动程序"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在使用 pyodbc 时遇到问题.我的 Linux Mint 14 上安装了 unixodbcunixodbc-devodbc-postgresqlpyodbc 软件包.我失去了自己找到解决方案的希望,任何帮助表示感谢.请参阅下面的详细信息:

跑步:

<预><代码>>>>导入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 ANSIPostgreSQL 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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆