通过pyodbc

时间:2018-04-30 11:58:12

标签: python odbc filemaker

我想使用ODBC连接在本地FileMaker数据库中更新映像。

我希望以下代码可以正常工作,但它失败了:

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)阅读图片可以正常工作。我收到一个字节对象,即图像。

1 个答案:

答案 0 :(得分:1)

在FileMaker ODBC中支持二进制插入并不好,旁边不存在。

我建议您将图像作为基础并将其作为文本插入,FileMaker将其解码回图像

相关问题