Версия БД: Microsoft SQL Azure (окончательная первоначальная версия) - 12.0.2000.8 12 октября 2019 22:46:48 Copyright (C) 2019 Microsoft Corporation
У меня есть модель sqlalchemy-orm Process
, как указано ниже.
class Process(Base):
__tablename__ = 'Process'
id = Column(Integer, primary_key=True, autoincrement=True)
process = Column(UnicodeText)
process_length = Column(Integer)
Я пытаюсь выполнить следующий запрос, чтобы найти строку, в которой процесс соответствует строке sorted_json
.
current_process = session.query(Process).filter(Process.process==sorted_json).one_or_none()
Этот запрос приводит к ошибке:
ProgrammingError: (pyodbc.ProgrammingError) ('42000', '[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]The data types nvarchar and ntext are incompatible in the equal to operator. (402) (SQLExecDirectW)')
Я попытался изменить тип данных столбца process
на ntext
в серверной части. Когда я запускаю запрос, он выдает странную ошибку:
ProgrammingError: (pyodbc.ProgrammingError) ('42000', '[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]The data types ntext and ntext are incompatible in the equal to operator. (402) (SQLExecDirectW)')
Следует отметить, что sorted_json
- это очень длинная строка json , содержащая около 4000 символов. Я полагаю, что sqlalchemy преобразует эту строку в ntext при выполнении запросов.
Вместо этого я попробовал подобную функцию sqlalchemy, например:
current_process = session.query(Process).filter(Process.process.like(sorted_json)).one_or_none()
Здесь нет ошибок, но при фактическом совпадении он не соответствует.
Любойпомощь приветствуется!