【问题标题】:Update oracle CLOB column with large string用大字符串更新 oracle CLOB 列
【发布时间】:2016-05-30 09:54:13
【问题描述】:

我有一个表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

【问题讨论】:

    标签: python oracle pyodbc clob lob


    【解决方案1】:

    我已经通过使用 SQL 绑定解决了这个问题。那个时候好像没有字数限制。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-31
      • 2019-03-16
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      相关资源
      最近更新 更多