使用 Python pyodbc 连接到普适数据库

Connect to Pervasive Database using Python pyodbc

我正在尝试使用 pyodbc 连接到 Pervasive 数据库。下面是我试过的代码:

import pyodbc

server = '10.10.10.01'
database = 'RMS'
username = 'test'
password = 'test123'
conn = pyodbc.connect(f'DRIVER=Pervasive ODBC Interface;SERVER={server};'
                          f'DBQ={database};UID={username};PWD={password}')
cursor = conn.cursor()

执行时出现以下错误:

pyodbc.OperationalError: ('08S01', '[08S01] [Zen][ODBC Client Interface][Client LNA]Connection attempt timed out. The SQL Connection Manager may be inactive or using a different transport protocol from the client. (10065) (SQLDriverConnect); [08S01] [Zen][ODBC Client Interface]Invalid connection string attribute. (0)')

我在网上看到一些例子,他们没有使用 username/password 进行连接。我也试过这个,但仍然收到同样的错误。数据库处于活动状态,因为我能够从另一个应用程序成功建立 OLE DB 连接。

有人看到我做错了什么吗?

在连接到另一台 Windows 机器的 Windows 机器上尝试后,连接字符串可能有问题。我一直收到错误 161 错误([Zen][ODBC Client Interface][LNA][Zen][SQL Engine][Data Record Manager]A key has reached an maximum limit for user count, session count, or数据正在使用中,或已将状态更改为过期或禁用。(检索错误 161))。一旦我将连接字符串从 SERVER= 更改为 SERVERNAME=,它就开始为我工作。 所以,我的测试文件是:

import pyodbc

server = 'PSQLSERVERNAME'
database = 'DEMODATA'
username = 'test'
password = 'test123'
conn = pyodbc.connect(f'DRIVER=Pervasive ODBC Interface;SERVERNAME={server};DBQ={database};UID={username};PWD={password}')
cursor = conn.cursor()
cursor.execute("SELECT * FROM CLASS;") 
row = cursor.fetchone() 
while row: 
    print(row[0])
    row = cursor.fetchone()

您需要更改服务器名称、数据库名称和 SQL 查询。