-1

我有一个systesttab包含几列的表。其中一列是 CLOB 类型,它应该包含一个 base64 编码图像的字符串。

CREATE TABLE systesttab(
    ...
    f_picture     CLOB       DEFAULT ' ' NOT NULL,
    ...
)

但是,当我尝试使用大的 base64 字符串(超过 100k 个字符)更新表时,它会失败并且我的 python 应用程序崩溃(即使放入 try...except 块)。

UPDATE systesttab SET f_picture = 'data:image/png;base64,iVBORw0KGgoASU ...'

我什至尝试将值转换为 clob:

UPDATE systesttab SET f_picture = TO_CLOB('data:image/png;base64,iVBORw0KGgoASU ...')

但我得到的只是这个错误:

Input string too long, limit 8192

现在,我想这试图告诉我一些关于块大小的信息,但这对我并没有真正的帮助。

在此处输入图像描述

如何使用单个语句更新表?

我必须以不同的方式声明表的创建语句吗?

如果有一种方法可以在单个语句中完成此操作,那么在更新同一个表上的多个列时它也应该起作用。

环境:python 3.4 & pyodbc

4

1 回答 1

0

我已经通过使用 SQL 绑定解决了这个问题。似乎字符限制不适用。

在 python 中,语句现在看起来像这样:

pic = 'data:image/png;base64,iVBORw0KGgoASU ...'
sql = "UPDATE systesttab SET f_picture = ?"
cursor.execute( sql, [pic] )

同时更新多个字段时,这也可以正常工作。

于 2016-06-17T13:17:37.860 回答