首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyODBC拒绝寻找unixODBC,而是寻找iODBC

pyODBC拒绝寻找unixODBC,而是寻找iODBC
EN

Stack Overflow用户
提问于 2016-06-21 14:40:15
回答 2查看 3.2K关注 0票数 1

是否有一种方法可以让pyODBC v3.0.10查找unixODBC驱动程序,而不是它想要查找的iODBC驱动程序?

我的理解是,默认情况下,pyODBC v3.0.10应该这样做,而v3.0.7之前的版本需要手动编辑setup.py文件(参见参考这里)。

还有一条线索,我运行了这段代码来列出我的ODBC源代码,但是它没有返回任何内容:

代码语言:javascript
复制
sources = pyodbc.dataSources()
dsns = list(sources.keys())
dsns.sort()
sl = []
for dsn in dsns:
    sl.append('%s [%s]' % (dsn, sources[dsn]))
print('\n'.join(sl))

进一步背景

我一直在努力使用以下设置创建到MSSQL的连接: pyODBC -> unixODBC -> FreeTDS ->MSSQL。血淋淋的细节被记录为这里

我把它缩小到了一个特定的问题(我认为):pyODBC包正在寻找iODBC驱动程序,而不是我安装和配置的unixODBC驱动程序。我相信这是因为当我跑步时:

代码语言:javascript
复制
import pyodbc

pyodbc.connect(
    'DRIVER=FreeTDS;'
    'SERVER=MyServerIP;'
    'PORT=1433;'
    'DATABASE= DatabaseName;'
    'UID=MyUsername;'
    'PWD=MyPassword')

我得到了这个错误,并引用到找不到iODBC驱动程序:

代码语言:javascript
复制
---------------------------------------------------------------------------
Error                                     Traceback (most recent call last)
<ipython-input-12-607f0d66e615> in <module>()
      1 pyodbc.connect(
----> 2     'DRIVER=FreeTDS;'
      3     'SERVER= MyServerIP;'
      4     'PORT=1433;'
      5     'DATABASE= DatabaseName;'

Error: ('00000', '[00000] [iODBC][Driver Manager]dlopen(FreeTDS, 6): image not found (0) (SQLDriverConnect)')

谢谢你所能提供的光。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-29 18:05:37

这是我的答案这里的转贴,但这回答了这个,更具体的问题的形成。希望我没有违反任何规则,但我花了好几个星期才弄明白,还有很多人的帮助。所以如果这是一个重复的问答,那就算了吧--这是我们应得的。

嗯,我们解决了这个问题--在这个页面上的很多人的帮助下,在原始的帮助下,我们找到了很多盲目的小巷。

正如(最终)所怀疑的,这是连接中的pyodbc链接。我使用pyodbc v3.0.10,从Anaconda包存储库下载。解决方案为3.0.9节。一旦我卸载了v3.0.10,从pypi存储库下载了v3.0.9,然后构建并安装了自己的conda包.啊,真灵。

我所采取的步骤如下(请注意,这些步骤是专门针对anaconda环境的):

代码语言:javascript
复制
conda uninstall pyodbc

conda skeleton pypi pyodbc --version 3.0.9

conda build pyodbc

conda install pyodbc=3.0.9 --use-local

当我回到我的木星笔记本,运行上面相同的代码,它创建了一个很好的连接。

我不知道v.3.0.10有什么问题,或者仅仅是anaconda.org在其存储库中的文件。我也在pyodbc页面上发布了一些东西,但是它看起来并不那么活跃。

不管怎样,谢谢大家的帮助。我希望这能节省一些时间。

票数 0
EN

Stack Overflow用户

发布于 2016-06-23 09:35:39

我相信原因是您可能已经编译了pyodbc来使用iODBC (或者这是默认的)。如果您想确保您在unixODBC上构建pyodbc,您可以按照这里的指示在运行setup.py build之前指定这个值(查看http://www.easysoft.com/developer/languages/python/pyodbc.html,标题pyodbc 3.0.x)。或者,尝试按照这里的说明:https://code.google.com/archive/p/pyodbc/wikis/Building.wiki

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37947482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档