Я использую SQLAlchemy для подключения к базе данных SQL Server.
Я пытаюсь вставить объект в таблицу из моего скрипта на python, и он не работает.Я получаю сообщение об ошибке:
(pyodbc.DataError) ('22008', '[22008] [Microsoft][ODBC SQL Server Driver]Datetime field overflow (0) (SQLExecDirectW)')
Похоже, что это вызвано следующим объектом datetime:
datetime.datetime(214, 7, 21, 0, 0)
... это 21 июля 214
Соответствующее поле даты и времени в таблице SQL Server имеет тип datetime2.
Похоже, что преобразование из python / SQLAlchemy в SQL Server не добавляет '0' к началу значения года.Я подтвердил это тем фактом, что я могу вручную добавить эту дату в SQL Server, используя инструкцию INSERT с и без начального «0».
Есть ли способ принудительно указать часть года в датев правильный формат?Или это вызвано чем-то еще?
ОБНОВЛЕНИЕ: С https://docs.sqlalchemy.org/en/latest/dialects/mssql.html Я обнаружил, что вы можете указать тип столбца как DATETIME2 (для MS SQL)и я соответственно обновил сопоставление объектов.
Так что раньше это было:
from base import Base
from sqlalchemy import Column, Integer, String, Numeric, DateTime
class Results(Base):
__tablename__ = 'Result'
dateTimeMinValue = Column(DateTime)
dateTimeMaxValue = Column(DateTime)
И я теперь обновил его до:
from base import Base
from sqlalchemy import Column, Integer, String, Numeric
from sqlalchemy.dialects.mssql import DATETIME2
class Results(Base):
__tablename__ = 'Result'
dateTimeMinValue = Column(DATETIME2)
dateTimeMaxValue = Column(DATETIME2)
Но япо-прежнему появляется та же ошибка, что и раньше.