Я хочу обновить изображение в локальной базе данных FileMaker, используя соединение ODBC.
Я ожидал, что следующий код будет работать, но он не работает:
import pyodbc
with open('myimage.jpg', 'rb') as f:
img = f.read()
# ensure we have a valid image
assert isinstance(img, bytes)
assert len(img) == 10506
dsn = 'DRIVER=/Library/ODBC/FileMaker ODBC.bundle/Contents/MacOS/fmodbc.so;Server=127.0.0.1;Port=2399;Database=MyDatabase;UID=Admin;PWD='
cnxn = pyodbc.connect(dsn)
cnxn.setencoding(encoding='utf-8')
cnxn.setdecoding(pyodbc.SQL_CHAR, encoding='macroman')
cursor = cnxn.cursor()
q = "UPDATE MyTable SET PutAs(Image, 'JPEG')=? WHERE Id=?"
cursor.execute(q, img, 37370)
Возникает исключение: ProgrammingError: '42000', '[42000] [FileMaker][FileMaker] FQL0001/(1:18): There is an error in the syntax of the query. (8310) (SQLPrepare)'
.
Чтение изображений с SELECT GetAs(Image, 'JPEG') FROM MyTable WHERE Id=37370)
работает нормально. Я получаю объекты байтов, который является изображением.