我正在尝试使用 Python 连接 c-TreeSQL。我知道我有正确的驱动程序,因为我可以使用 George Poulose 的查询工具
进行连接我尝试过这些变体,但每一个都崩溃了;
import pyodbc
## Instructions from http://doc.4d.com/4Dv17/4D/17/Using-a-connection-string.200-3786162.en.html
# conn = pyodbc.connect('Driver={c-treeACE ODBC Driver};Host=<Host from driver config>;UID=<User name>;PWD=<Password>;DATABASE=liveSQL;')
# Connection string from Query Tool
# conn = pyodbc.connect('Driver={c-treeACE ODBC Driver};ODBC;DSN=DOTLIVEREP;Host=<Host from driver config>;UID=<User name>;PWD=<Password>;DATABASE=liveSQL;SERVICE=6597 ;CHARSET NAME=;MAXROWS=;OPTIONS=;;PRSRVCUR=OFF;;FILEDSN=;SAVEFILE=;FETCH_SIZE=;QUERY_TIMEOUT=;SCROLLCUR=OFF;')
# Connection string from Query Tool. Added driver parameter
conn = pyodbc.connect('ODBC;DSN=DOTLIVEREP;Host=<Host from driver config>;UID=<User name>;PWD=<Password>;DATABASE=liveSQL;SERVICE=6597 ;CHARSET NAME=;MAXROWS=;OPTIONS=;;PRSRVCUR=OFF;;FILEDSN=;SAVEFILE=;FETCH_SIZE=;QUERY_TIMEOUT=;SCROLLCUR=OFF;')
print('Success')
这些连接字符串中的每一个都会导致 PyCharm、IDLE 和控制台崩溃。
我不确定是什么原因导致的
您应该更改连接字符串中的字段,其中 是您应用程序的特定值。
例如这里,而不是< Host from driver config >。假设您的主机是 MYHOST。你应该把 MYHOST.对于 < User name > 也是如此,您应该输入您的用户名,例如 jacob 等。通常这些带括号的字段是您输入值的字段:
# Connection string from Query Tool. Added driver parameter
conn = pyodbc.connect('ODBC;DSN=DOTLIVEREP;Host=MYHOST;UID=jacob;PWD=<Password>;DATABASE=liveSQL;SERVICE=6597 ;CHARSET NAME=;MAXROWS=;OPTIONS=;;PRSRVCUR=OFF;;FILEDSN=;SAVEFILE=;FETCH_SIZE=;QUERY_TIMEOUT=;SCROLLCUR=OFF;')
尽管我没有遇到像您一样的问题,但这是我使用 pyodbc 和 MS SQL Server 时对错误的修复:
我尝试在代码开头连接到同一个服务器上的多个数据库。当我尝试连接到 same 服务器上的第二个数据库时,我的代码抛出了此错误。
我修复此问题的方法是先关闭与服务器的第一个连接,执行需要完成的工作,然后关闭连接。然后我连接到我的第二个数据库,一切正常。
对于那些在这个问题上苦苦挣扎了好几个小时的人,只需使用 ODBC 库而不是 PyODBC 库:一旦使用 ODBC.odbc() 与完全相同的连接字符串进行连接,一切都会正常。
我不知道 c-tree 驱动程序 VS PyODBC 库是什么(我的客户使用 Attache,它使用 c-tree 驱动程序的变体进行连接,该驱动程序是 32 位的,但不确定这是否是问题,因为我也使用 32 位 Python),在我的情况下,它只会使 Python.exe 在连接后立即崩溃。