Почему не петли? Вот что-то, что сделало бы это довольно хорошо:
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));}
Ваш пример говорит:
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
- Операция сопоставления была запрошена для неизвестного экземпляра.