sqlalchemy.exc.IntegrityError: (pyodbc.IntegrityError) ('23000', '[23000] [FreeTDS][SQL Server]Cannot insert an explicit value into a timestamp column. Use INSERT with a column list to exclude the timestamp column, or insert a D EFAULT into the timestamp column. (273) (SQLExecDirectW)') [SQL: 'INSERT INTO task_events (task_id, event_name, ts) OUTP UT inserted.id VALUES (?, ?, ?)'] [parameters: (54, 'RUNNING', datetime.datetime(2017, 1, 16, 18, 5, 55, 595066))]SQLAlchemy не удается вставить метку времени в MSSQL
ошибка, кажется, связано с этим:
You can't insert explicit values into a timestamp column. Timestamp values are unique binary numbers that are automatically generated.
Не SQLAlchemy знает об этом? Есть ли какой-то ключ \, позволяющий SQLAlchemy знать, что теперь вставлять временные метки?
This, похоже, является кодом luigi, который обрабатывает SQLAlchemy.
пс. Здесь проблема заключается в том, что luigi использует SQLAlchemy, и я не хочу изменять код luigi, но если вы можете предложить простое решение на стороне luigi, это тоже сработает.
Привета, может вы можете опубликовать фрагмент кода, который вызывает это. В общем случае SqlAlchemy может выполнять мелкозернистые вставки только на некоторых столбцах, но решение здесь будет зависеть от того, как ваш код luigi взаимодействует с sqlalchemy или изменяет схему базы данных, чтобы разрешить вставку в столбец 'ts' –
Попробуйте использовать [ 'FetchedValue'] (http://docs.sqlalchemy.org/en/latest/core/defaults.html#triggered-columns). Без полного и проверяемого примера трудно сказать больше. Что предоставляет значение datetime для вставки? –
Тип данных «timestamp» Microsoft SQL Server на самом деле не является временной меткой - это скорее последовательность (это древний захват и ужасно неправильное название). Если вам нужно обновить значение даты, используйте тип данных 'datetime'. Если используется только дата, используйте тип данных «date» (в зависимости от вашей версии MSSQL.) В поисках кода вы, вероятно, захотите использовать тип данных '' datetime2' '(https://msdn.microsoft.com/en -us/library/bb677335.aspx), например 'DECLARE @ dt2 datetime2 (7)' –