在更新 cx_oracle 中的表时出现 DatabaseError: ORA-00933: SQL 命令未正确结束

Posted

技术标签:

【中文标题】在更新 cx_oracle 中的表时出现 DatabaseError: ORA-00933: SQL 命令未正确结束【英文标题】:in updating the table in cx_oracle getting DatabaseError: ORA-00933: SQL command not properly ended 【发布时间】:2019-10-22 07:31:28 【问题描述】:

同时使用python3.7更新cx_oracle中的表 错误如下。

DatabaseError: ORA-00933: SQL 命令未正确结束

x=datetime.now()
cur.execute("update HMA_UTILITIES.REFRESH_DATA set REC_UPDATE_DATE="+str(x)+"STATUS="+"FINISHED"+","+"where JOB_ID="+str(id)+";")

【问题讨论】:

我认为执行命令应该是这样的。 cur.execute("update HMA_UTILITIES.REFRESH_DATA set REC_UPDATE_DATE="+str(x)+", STATUS=FINISHED where JOB_ID="+str(id)+";") 【参考方案1】:

结尾的“;”不应包含在您的陈述中。此外,您应该使用绑定变量而不是 SQL 中嵌入的文字值。所以是这样的:

x = datetime.now()
cur.execute("""
        update HMA_UTILITIES.REFRESH_DATA set 
            REC_UPDATE_DATE = :rec_update_date,
            STATUS = 'FINISHED'
        where JOB_ID = :job_id""",
        rec_update_date=x,
        job_id=id)

【讨论】:

@hema 见cx-oracle.readthedocs.io/en/latest/user_guide/…

以上是关于在更新 cx_oracle 中的表时出现 DatabaseError: ORA-00933: SQL 命令未正确结束的主要内容,如果未能解决你的问题,请参考以下文章

安装 cx_Oracle - Python 时遇到问题?

使用 cx_Oracle 中 csv 文件中的变量更新数据库

读取 CoreData 时出现罕见错误:CoreData 结果中的 data:<fault>

VS 2015:尝试连接到 Excel 时出现“抛出异常:System.Data.dll 中的‘System.Data.OleDb.OleDbException’”

在配置触发器时更新表中的列时出现错误

Netbeans 连接到 SQLite 时出现 SQLite 错误或缺少数据库(没有这样的表)