Я использую отображенный класс sqlalchemy в таблицу SQL Server.I DBSession.add () экземпляры класса Activity (сопоставленный класс) с данными, полученными из другого источника.и затем я вызвал транзакцию транзитной передачи () (так как я звоню из tg2, я не могу использовать session.commit ())
трассировка ошибок:
DataError: (DataError) ('22001', '[22001] [Microsoft][ODBC SQL Server Driver][SQ
L Server]String or binary data would be truncated. (8152) (SQLExecDirectW); [010
00] [Microsoft][ODBC SQL Server Driver][SQL Server]The statement has been termin
ated. (3621)') u'INSERT INTO [NOAR_LOADEVENTS] ([EVENTCODE]) VALUES (?)' ((u'210
401',), (u'210402',), (u'210602',), (u'210603',), (u'000010',), (u'000102',), (u
'000206',), (u'000107',) ... displaying 10 of 49 total bound parameter sets ...
(u'211302',), (u'210403',))
радЛюбая помощь по этому поводу, так как я не знаю, как продолжить / отладить это здесь
edit: у меня было подозрение, что это как-то связано с юникодом, поэтому я изменил столбец sqlalchemy на юникод.
возможно, DataError как-то застрял, и мне нужно вызвать откат, но я не знаю, как вызвать откат в транзакции в tg2
edit : столбец EVENTCODE вmssql: datatype: PK, nvarchar (6). Надеюсь, что это поможет
другое редактирование : код вставки (соответствующая часть)
event = #json with data
ac['EVENTCODE']=event.get('code')#for example u'210602' - from the failing data
...
...
e = Activities(**ac) # this is the class mapped with sqlalchemy to the NOAR_LOADEVENTS in sqlalchemy.
DBSession2.add(e)
transaction.commit()