cx_oracle 使用 select 查询插入无效

cx_oracle insert with select query not working

我正在尝试使用 cx_oracle 在 python 中插入数据库 (Oracle)。我需要从 table select 插入另一个 table.

 insert_select_string = "INSERT  INTO wf_measure_details(PARENT_JOB_ID,  STAGE_JOB_ID,  MEASURE_VALS,  STEP_LEVEL,  OOZIE_JOB_ID,  CREATE_TIME_TS) \
                               select PARENT_JOB_ID,  STAGE_JOB_ID,  MEASURE_VALS,  STEP_LEVEL,  OOZIE_JOB_ID,  CREATE_TIME_TS from wf_measure_details_stag where oozie_job_id = '{0}'.format(self.DAG_id)"

 conn.executemany(insert_select_string)
 conn.commit()
 insert_count = conn.rowcount

但是我遇到了以下错误。我没有数据的 select 参数,因为数据来自 select 查询。

Required argument 'parameters' (pos 2) not found

请建议如何解决这个问题

正如 Chris 在对您的问题的评论中提到的,您想使用 cursor.execute() 而不是 cursor.executemany()。您还希望使用绑定变量而不是内插参数,以提高性能并降低安全风险。看看documentation。在你的情况下你会想要这样的东西(未经测试):

cursor.execute("""
        INSERT  INTO wf_measure_details(PARENT_JOB_ID,  STAGE_JOB_ID,
                MEASURE_VALS,  STEP_LEVEL,  OOZIE_JOB_ID,  CREATE_TIME_TS)
        select PARENT_JOB_ID,  STAGE_JOB_ID,  MEASURE_VALS,  STEP_LEVEL,
                OOZIE_JOB_ID,  CREATE_TIME_TS
        from wf_measure_details_stag
        where oozie_job_id = :id""",
        id=self.DAG_id)