ccqz 2022-05-12 01:14 采纳率: 0%
浏览 226

python的 jaydebeapi 如何执行批量插入

问题遇到的现象和发生背景

1、使用oracle数据库进行A库导出,B库导入
2、在执行executemany时提示 java.sql.SQLException: 无效的列索引

问题相关代码,请勿粘贴截图
import sys
import os
import jaydebeapi

url = 'jdbc:oracle:thin:@8.142.180.78:1521:MAEASDB'
driver = 'oracle.jdbc.driver.OracleDriver'
userTo = 'MAEAS'
passwordTo = 'MAEAS'
jarFile = 'D:/Tools/JDBC/ojdbc8.jar'
connTo = jaydebeapi.connect(jclassname=driver,
                          url=url,
                          driver_args=[userTo, passwordTo],
                          jars=jarFile)
#connTo.setAutoCommit(false)
data01 = [['1', 'Ada', '23'], 
          ['2', 'Black', '19'], 
          ['3', 'Tim', '30']]
cursTo = connTo.cursor()
sqlInsert = "insert into CT_CUS_PAYITEMSCATE_INIT (FREGIONCODE, FCATEGORYNUMBER, FCATEGORYNAME) values('%s','%s','%s') "
for i in data01:
  
   try:   
      value=(data01[0],data01[1],data01[2])
      cursTo.executemany(sqlInsert,value)
      print(sqlInsert)
      print('成功...')
   except Exception as e:
      print("错误信息:", e)
运行结果及报错内容

cursTo.executemany(sqlInsert,value) File d:\Programs\Python\Python\lib\site-packages\jaydebeapi_init_.py:549, in Cursor.executemany(self, operation, seq_of_parameters)

521 for i in range(len(parameters)):
522 # print (i, parameters[i], type(parameters[i])) -->
523 prep_stmt.setObject(i + 1, parameters[i]) j
java.sql.SQLException: java.sql.SQLException: 无效的列索引

而jaydebeapi 的源代码521开始是进行sql语句准备,见下图。这个参数应该怎么写才能对?

img

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

2条回答 默认 最新

  • ~白+黑 Python领域新星创作者 2022-05-12 09:12
    关注

    values('%s','%s','%s')占位符应该是?号吧,values('?','?','?'),而且你是批量插入,直接传入 cursTo.executemany(sqlInsert,data01)就行

    哦不是sqlite3,那也应该差不多,试试吧

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月12日

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算