Как я могу обновить varbinary (max) столбцы в SQL Server с flask? - PullRequest
0 голосов
/ 17 января 2020

У меня есть таблица City:

name | id | pic
-----+----+-----
A    | 1  | null
B    | 2  | null
C    | 3  | null
D    | 4  | null

Я хочу обновить столбец pic этой таблицы, где id равно 2. Как я могу это сделать?

Мой код:

file = request.files['file']
saveFileToDB = "UPDATE [Db2].[dbo].[City] SET (pic) VALUES (?) WHERE id = 2"
CU.execute(saveFileToDB, (file.read()))
CU.commit()

Сообщение об ошибке:

pyodb c .ProgrammingError: ('42000', "[42000] [Microsoft] [ODB C SQL Драйвер сервера] [SQL Сервер] Неверный синтаксис рядом с '('. (102) (SQLExecDirectW); [42000] [Microsoft] [ODB C SQL Драйвер сервера] [SQL Сервер] (s) не удалось подготовить. (8180) "

или:

saveFileToDB = "UPDATE [Db2].[dbo].[City] SET pic = Convert(Varbinary(max),'%s') WHERE id = 2"%file.read()

, но это не работает.

1 Ответ

3 голосов
/ 17 января 2020

Ваш синтаксис обновления отключен. Используйте эту версию:

file = request.files['file']

saveFileToDB = "UPDATE City SET pic = ? WHERE id = 2"
CU.execute(saveFileToDB, (file.read(),))
CU.commit()

В качестве заметки я использовал (file.read(),), с запятой здесь. Это необходимо для того, чтобы Python считывал его как кортеж, а не как скалярную переменную.

...