【问题标题】:checking if cx_Oracle cur.executemany() is success or not检查 cx_Oracle cur.executemany() 是否成功
【发布时间】:2019-07-01 04:27:41
【问题描述】:

如何在 python 中检查 cur.executemany() 是否成功?

a = self.cur.executemany("""insert into test_table(REQUEST_ID,PLATFORM_NAME,SYSTEM_NAME,DB_NAME,TABLE_NAME,COLUMN_NAME,COLUMN_DESC,DATA_TYPE,LENGTH,PRECISION,PRIMARY_KEY_FLAG,CREATED_BY_DS_ID) values(:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12)""",rowTup)

我已经尝试过了,但即使数据被插入到表中,“a”中的值也是“无”。

【问题讨论】:

    标签: python-2.7 cx-oracle


    【解决方案1】:

    如果没有异常,则 cursor.executemany() 调用成功,所有数据都应该插入到表中。

    【讨论】:

      【解决方案2】:

      找到解决办法,

      我们可以添加 'batcherrors = True' 和 execute many 来检查是否有任何错误

      self.cur.executemany("""insert into test_table(REQUEST_ID,PLATFORM_NAME,SYSTEM_NAME,DB_NAME,TABLE_NAME,COLUMN_NAME,COLUMN_DESC,DATA_TYPE,LENGTH,PRECISION,PRIMARY_KEY_FLAG,CREATED_BY_DS_ID) values(:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12)""",rowTup,batcherrors = True, arraydmlrowcounts = True)
                      if len(self.cur.getbatcherrors()) == 0:
                          self.updateStatus(...)
                      else:
                          self.updateStatus(...)
      

      【讨论】:

      • 有些类型的错误是批处理错误无法防止的,首先是您的 SQL 语句中的语法错误,所以请遵循 Anthony 的建议。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多