Обработка ошибок в SQLAlchemy

Почему не петли? Вот что-то, что сделало бы это довольно хорошо:

        string str = "111122223333444455";
        int chunkSize = 4;
        int stringLength = str.Length;
        for (int i = 0; i < stringLength ; i += chunkSize)
        {
            if (i + chunkSize > stringLength) chunkSize = stringLength  - i;
            Console.WriteLine(str.Substring(i, chunkSize));

        }
        Console.ReadLine();

Я не знаю, как бы вы справлялись с случаем, когда строка не является фактором 4, но не говорит, что идея не возможна , просто интересно, мотивация для него, если простая петля делает это очень хорошо? Очевидно, что вышеупомянутое можно было очистить и даже ввести в качестве метода расширения.

Или, как упоминалось в комментариях, вы знаете, что это / 4, тогда

str = "1111222233334444";
for (int i = 0; i < stringLength; i += chunkSize) 
  {Console.WriteLine(str.Substring(i, chunkSize));} 
37
задан bodacydo 26 January 2010 в 00:21
поделиться

2 ответа

Ваш пример говорит:

status = db.query("INSERT INTO users ...")
if (!status):
    raise Error, db.error

, который, кажется, означает, что вы хотите поднять исключение, если в запросе есть некоторая ошибка (с ошибка ROOG, DB.ERROR ). Однако SQLalchemy уже делает это для вас - так

user = User('Boda Cydo')
session.add(user)
session.commit()

просто то же самое. Часть проверки и поднять уже внутри SQLALCHEMY.

Вот список ошибок SQLALCHEMY сама может поднять, взятые из справки (sqlalchemy.exc) и справка (sqlalchemy.orm.exc) :

  • SQLALCHEMY. EXC :
    • ArgumentError - поднял, когда прилагается недействительный или конфликтующий аргумент функции. Эта ошибка обычно соответствует ошибкам состояний конструкции.
    • CirculardePendencyError - поднят топологическими сортами, когда обнаружена циркулярная зависимость
    • CompileError - поднята при возникновении ошибки во время компиляции SQL
    • ConcurrentModicentionError
    • DBapierror - поднял при выполнении операции базы данных не удается. Если операция по повышению ошибок произошла в выполнении SQL заявление, это утверждение и его параметры будут доступны на Объект исключения в формулировании и атрибутов . Объект исключения завернутого исключения доступен в атрибуте . Его тип и свойства относятся к реализации DB-API.
    • DataError обертывает DB-API DataError .
    • DatabaseError - Wraps DB-API DatabaseError .
    • DisconnectionError - Отключение обнаружено на необработанном соединении DB-API. Подниматься POOLLISTENER , так что принимающий пул заставляет отключить.
    • Флушеррор
    • идентификаторError - поднял, когда имя схемы находится за пределами максимального ограничения символов
    • IntegriteInterError - обертывает DB-API IntegriteInterError .
    • ShifterError - Wraps DB-API SparkerError .
    • Интернентрор - Wraps DB-API .
    • InvalidrequestError - SQLalalchemy попросили сделать что-то, что он не может сделать. Эта ошибка обычно соответствует ошибкам состояния выполнения.
    • NOREFERENCEERROR - поднял Иностранна , чтобы указать, что ссылка не может быть решена.
    • NOREFERECENCELCOLUMNERROR - поднял Иностранным ключом , когда указанный колонна не может быть расположена.
    • NOREFERENCETTALEERROR - поднят в INCOULLKEY , когда ссылается таблица не может быть расположена.
    • NOSUCHCOLUMERRORROR - несуществующая колонна запрашивается из RowProxy .
    • NOSUCHTALEERROR - Таблица не существует или не видно для соединения.
    • NotSupportedError - обертывает DB-API NotSupportedError .
    • OperationalError - Оперативные органы DB-API .
    • PROGRAMMINGERROR - WrammingErroring DB-API .
    • SadePrecationwarning - выдан один раз за использование устаревшего API.
    • spendenddeprecationwarning - выдан один раз за использование устаревшего API.
    • Sawarning - выдан во время выполнения.
    • SQLALCHEMEERROR - универсальный класс ошибок.
    • SQLError - поднял при выполнении выполнения операции базы данных.
    • TimeOuteRROR - поднял, когда в бассейне соединения на получение соединения.
    • UnvidexecutyError - SQL был предпринят попытки без подключения к базе данных для его выполнения.
    • MENMA7DCOMNERROR
  • sqlalchemy.orm.exc :
    • CONCULRENTMODICICEERROR - строки были изменены вне единицы работы.
    • Флушеррор - Неверное состояние было обнаружено во время Flush () .
    • Мультиперщик - был необходим один результат базы данных, но более одного найден.
    • NORESULTFOOOND - Результат базы данных был необходим, но ни один не был найден.
    • ObjectDeletedError - A Обновление () Операция не удалось восстановить строку объекта.
    • MONUMEDCASSASSERROR - Операция сопоставления была запрошена для неизвестного класса.
    • MENMA7DCOMNERROR - Операция картирования была запрошена на неизвестный столбец.
    • UnmaMedError - TODO
    • MENMAMPINSTANCEERROR - Операция сопоставления была запрошена для неизвестного экземпляра.
62
ответ дан 27 November 2019 в 01:38
поделиться

SQLALCHEMY повысит исключение по ошибке ....

1
ответ дан 27 November 2019 в 01:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: