pyodbc: Как предотвратить сбой канала связи, ошибки ConnectionWrite и ConnectionRead?

Я использую pyodbc для подключения к моему SQL-серверу. Мои скрипты в большинстве случаев выполняются должным образом, но иногда я получаю одну из этих трех ошибок, когда скрипт выполняет команду с базой данных SQL:

  1. pyodbc.Error: ('08S01', '[08S01] [Microsoft] [ODBC SQL Server Driver] Ошибка канала связи (0) (SQLExecDirectW)')

  2. pyodbc.Error: ('01000', '[01000] [Microsoft] [Драйвер ODBC SQL Server] [DBNETLIB] ConnectionWrite (send ()). (10054) (SQLExecDirectW)')

  3. pyodbc.Error: ('01000', '[01000] [Microsoft] [Драйвер ODBC SQL Server] [DBNETLIB] ConnectionRead (recv ()). (10054) (SQLExecDirectW)')

Что я могу сделать, чтобы этого не произошло?

Изменить: Фактические команды в моем скрипте действительно очень простые, поэтому я не упоминал об этом в своем исходном сообщении.

import pyodbc
connectionString1 = 'x'
connection1 = pyodbc.connect(connectionString1)
cursor1 = connection1.cursor()
query1 = '''
            SELECT/UPDATE ...
            '''
cursor1.execute(query1)
res = cursor1.fetchall()
# do some operations using res
connection1.commit()

person 90abyss    schedule 20.12.2016    source источник
comment
Возможно, нам потребуется увидеть фактическую команду (и).   -  person Parfait    schedule 20.12.2016
comment
@Parfait, пожалуйста, проверьте отредактированный пост   -  person 90abyss    schedule 20.12.2016
comment
Вы не получаете эти ошибки из-за простых операторов SELECT. Это ваша среда, такая как конфигурации db, TCP-порты, сеть. Я советую спросить об этом на DBA Stack Exchange.   -  person Parfait    schedule 20.12.2016


Ответы (1)


sqlalchemy.exc.OperationalError:

sqlalchemy.exc.OperationalError: (pyodbc.OperationalError) ('08S01', '[08S01] [Microsoft] [драйвер ODBC 17 для SQL Server] Поставщик TCP: код ошибки 0x68 (104) (SQLExecDirectW)')

Сегодня у меня такая же проблема, потому что длины поля недостаточно по отношению к длине данных. Увеличение длины поля решит проблему.

person bigfoot88    schedule 10.07.2021