问题遇到的现象和发生背景
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语句准备,见下图。这个参数应该怎么写才能对?