Подключитесь к всепроникающей базе данных с помощью Python pyodbc

#python #pyodbc #pervasive

#питон #pyodbc #распространенный

Вопрос:

Я пытаюсь подключиться к всепроникающей базе данных с помощью pyodbc. Ниже приведен код, который я пробовал:

 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()  

При выполнении я получаю следующую ошибку:

пиодбк.Ошибка операции: (’08S01′, ‘[08S01] [Zen][Клиентский интерфейс ODBC][LNA клиента]Время ожидания попытки подключения истекло. Диспетчер подключений SQL может быть неактивен или использовать транспортный протокол, отличный от клиентского. (10065) (SQLDriverConnect); [08S01] [Zen][Клиентский интерфейс ODBC]Недопустимый атрибут строки подключения. (0)’)

Я видел несколько примеров в Интернете, когда они подключаются, не используя имя пользователя/пароль. Я тоже пробовал это, но все равно получаю ту же ошибку. База данных активна, так как я могу успешно подключиться к OLE DB из другого приложения.

Кто-нибудь видит, что я делаю не так?

Комментарии:

1. Можете ли вы подключиться к базе данных PSQL с компьютера, на котором вы используете pyodbc? Есть ли у вас брандмауэр, блокирующий порт 1583 от клиента или сервера? Если ваша БД не защищена, вам следует исключить ее из строки подключения.

2. Еще вопросы. Какую ОС, версию Python, версию PSQL вы используете? Правильно ли указан IP-адрес для вашего PSQL-сервера? Что произойдет, если вы используете имя сервера?

Ответ №1:

После попытки на компьютере с Windows, подключающемся к другой машине с Windows, может возникнуть проблема со строкой подключения. Я продолжал получать сообщение об ошибке 161 ( [Zen][Клиентский интерфейс ODBC][LNA][Zen][SQL Engine][Диспетчер записей данных]Ключ достиг максимального предела для количества пользователей, количества сеансов или используемых данных или изменил состояние на истекшее или отключенное.(Ошибка Btrieve 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 — запрос.

Комментарии:

1. Спасибо тебе, весельчак! Это сработало после смены СЕРВЕРА на ИМЯ СЕРВЕРА.