gpt4 book ai didi

python - 我如何解决ORA-01704 : string literal too long error in Python cx_oracle?

转载 作者:行者123 更新时间:2023-11-28 23:03:20 26 4
gpt4 key购买 nike

我正在尝试使用 Python cx_oracle 更新表中的条目。该列名为"template",数据类型为 CLOB。

这是我的代码:

dsn = cx_Oracle.makedsn(hostname, port, sid)
orcl = cx_Oracle.connect(username + '/' + password + '@' + dsn)
curs = orcl.cursor()
sql = "update mytable set template='" + template + "' where id='6';"
curs.execute(sql)
orcl.close()

当我这样做时,我收到一条错误消息,指出字符串文字太长。模板变量包含大约 26000 个字符。我该如何解决这个问题?

编辑:

我找到了这个:http://osdir.com/ml/python.db.cx-oracle/2005-04/msg00003.html
所以我尝试了这个:

curs.setinputsizes(value = cx_Oracle.CLOB)
sql = "update mytable set template='values(:value)' where id='6';"
curs.execute(sql, value = template)

然后我收到“ORA-01036:非法变量名称/编号错误”

编辑2:

现在这是我的代码:

    curs.setinputsizes(template = cx_Oracle.CLOB)
sql = "update mytable set template= :template where id='6';"
print sql, template
curs.execute(sql, template=template)

我现在收到 ORA-00911:无效字符错误。

最佳答案

在 sql 语句中插入值是一种非常糟糕的做法。您应该改用参数:

dsn = cx_Oracle.makedsn(hostname, port, sid)
orcl = cx_Oracle.connect(username + '/' + password + '@' + dsn)
curs = orcl.cursor()
curs.setinputsizes(template = cx_Oracle.CLOB)
sql = "update mytable set template= :template where id='6'"
curs.execute(sql, template=template)
orcl.close()

关于python - 我如何解决ORA-01704 : string literal too long error in Python cx_oracle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8620267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com