Страницы

8 ноября 2015 г.

Python. Ошибка Teradata beyond SQL_ACTIVE_STATEMENTS limit

Если кто-то встретился с такой проблемой, .то вы просто не закрываете "курсор" когда отправляете много statements на сервер.

Вот пример кода который генерирует ошибку:
    def executeSql(sqlCommand, parameters = ()):
        connect = SqlQuery.getConnect()
        try:
            cursor = connect.cursor()
            cursor.execute(sqlCommand, parameters)
            connect.commit()
        except Exception as e:
            logger.exception('Sql query error.', str(e))
            connect.rollback()
        finally:
            connect.close()
        return 0


Вот пример кода, который позволяет избежать ошибки:
    def executeSql(sqlCommand, parameters = ()):
        connect = SqlQuery.getConnect()
        try:
            cursor = connect.cursor()
            cursor.execute(sqlCommand, parameters)
            connect.commit()
        except Exception as e:
            logger.exception('Sql query error.', str(e))
            connect.rollback()
        finally:
            cursor.close()
            connect.close()
        return 0

SqlQuery  - это самописный билдер подключений. Он не влияет на проблему.
Проблема была замечена пока только на терадате.

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

Отправить комментарий