使用pyodbc

时间:2016-08-14 01:23:13

标签: pyodbc filemaker freetds unixodbc

我在Mac Mini上的FileMaker Server 14上运行了一个FileMaker数据库,我试图用pyodbc来实现它。它进展不顺利。

首先,什么有效:

telnet 192.169.19.3 2399
ssh Name@192.169.19.3
tsql -H FM-Server -p 2399 -U Name -P pwd

关于最后一个的一个奇怪的事情是它给了我一个秒计数器:
1
2
不是提示,虽然我仍然可以输入命令。我不确定这意味着什么,也无法找到任何关于它的信息。

现在,什么都行不通:

tsql -LH 192.169.19.3
tsql -LH FM-Server
isql FM-Server Name pwd

没有列出的FileMaker服务器信息,isql给了我[ISQL]ERROR: Could not SQLConnect,这对你知道非常有帮助

有一个问题是,在这一点上,我有点忘记我是否应该使用FM ODBC或FreeTDS作为我在pyodbc中的驱动程序,幸运的是它们都不起作用:

>>> c = pyodbc.connect("DRIVER={FreeTDS};DSN=FM-Server;UID=Name;PWD=pwd")  
pyodbc.Error: ('08001', '[08001] [unixODBC][FreeTDS][SQL Server]Unable to connect to data source (0) (SQLDriverConnect)')  
>>> c = pyodbc.connect("DRIVER={FileMaker ODBC};DSN=FM-Server;UID=Name;PWD=pwd")  
pyodbc.Error: ('08S01', '[08S01] [unixODBC][FileMaker][FileMaker ODBC] Failed to connect to listener (2) (65535) (SQLDriverConnect)')

只给DSN冻结窗口。这是我的配置:

odbc.ini | /usr/local/Cellar/unixodbc/2.3.4/etc/odbc.ini

[FM-Server]
Driver = FreeTDS
Host = 192.169.19.3
ServerName = FM-Server
UID = Name
PWD = pwd
Port = 2399 

odbcinst.ini | /usr/local/Cellar/unixodbc/2.3.4/etc/odbcinst.ini

[ODBC Drivers]
FileMaker ODBC = Installed
FreeTDS = Installed 

[FileMaker ODBC]
Driver = /Library/ODBC/FileMaker ODBC.bundle/Contents/MacOS/fmodbc.so
Setup  = 

[FreeTDS]
Description = FreeTDS
Driver = /usr/local/Cellar/freetds/1.00.9/lib/libtdsodbc.0.so
Setup = /usr/local/Cellar/freetds/1.00.9/lib/libtdsodbc.0.so
UsageCount = 1 

freetds.conf | /usr/local/Cellar/freetds/1.00.9/etc/freetds.conf

[FM-Server]
    host = 192.169.19.3
    port = 2399
    tds version = 8.0 

非常感谢任何信息并对资源herehere和其他地方大喊大叫,以帮助我实现这一目标。

1 个答案:

答案 0 :(得分:3)

我能够通过以下略微缩写来解决这个问题 brew uninstall freeDTS brew uninstall unixODBC pip uninstall pyodbc 使用ActualTech的安装程序重新安装了pyodbc(如果有必要,不确定):http://www.actualtech.com/python-osx-odbc.php

将我的odbc.ini切换为“Driver = FileMaker ODBC”而不是“Driver = freeTDS”,但考虑到我实际运行的代码,我不是那个必要的: python import pyodbc c = pyodbc.connect("DRIVER={FileMaker ODBC};SERVER=192.169.19.3;PORT=2399;UID=Name;PWD=pwd") 神奇地工作了。 idk man