首页 > 解决方案 > 插入多行,其中插入语句的列的所有值都相同,除了一列

问题描述

我正在将多个条目插入表中。除了一列之外,插入语句的所有列的值都是相同的。如程序所示,此特定列从 excel 文件中连续获取值。我不知道如何使用 cx_Oracle 模块将此增量值传递给插入查询。

我尝试使用代码中显示的绑定概念,但没有任何成果,请建议。

import pandas as pd

df=pd.read_excel(r'C:\Users\ABHISHEK.POUDEL\Desktop\mmyyyy.xlsx')

import cx_Oracle
con=cx_Oracle.connect('system/manager1@192.168.8.72:1521/SANUPS')
cur=con.cursor()

print(con.version)


print(df.head(5))

x=df.head(5)
size=x.size
sql="""Insert into tbaadm.hol (CAL_B2K_TYPE,CAL_B2K_ID,MMYYYY,DEL_FLG,HLDY_STR,COMMENT_STR,RECVD_STR,STATUS,LCHG_USER_ID,LCHG_TIME,RCRE_USER_ID,RCRE_TIME,TS_CNT,BANK_ID)
    VALUES ('BRANCH','910',:1,'N',null,null,null,' ','SYSTEM',to_date('25-JUL-19','DD-MON-YY'),'SYSTEM',to_date('25-JUL-19','DD-MON-RR'),0,'01')"""

def insert_func(val):
    val=str(val)
    #cur.execute(sql,(val))
    cur.execute("""Insert into tbaadm.hol (CAL_B2K_TYPE,CAL_B2K_ID,MMYYYY,DEL_FLG,HLDY_STR,COMMENT_STR,RECVD_STR,STATUS,LCHG_USER_ID,LCHG_TIME,RCRE_USER_ID,RCRE_TIME,TS_CNT,BANK_ID)
    VALUES ('BRANCH','910',:1,'N',null,null,null,' ','SYSTEM',to_date('25-JUL-19','DD-MON-YY'),'SYSTEM',to_date('25-JUL-19','DD-MON-RR'),0,'01'), val""")
    return

for f in range(size):
    print(f)
    print(df.iloc[f])
    insert_func(df.iloc[f])


con.commit()
con.close()


11.2.0.2.0
   MMYYYY
0  122099
1  122098
2  122097
3  122096
4  122095
0
MMYYYY    122099
Name: 0, dtype: int64
Traceback (most recent call last):
  File "D:\AVI\PYTHON\KOMODO_FILES\create_date_daily_files.py", line 40, in <module>
    insert_func(df.iloc[f])
  File "D:\AVI\PYTHON\KOMODO_FILES\create_date_daily_files.py", line 34, in insert_func
    VALUES ('BRANCH','910',:1,'N',null,null,null,' ','SYSTEM',to_date('25-JUL-19','DD-MON-YY'),'SYSTEM',to_date('25-JUL-19','DD-MON-RR'),0,'01'), val""")
cx_Oracle.DatabaseError: ORA-00933: SQL command not properly ended

标签: pythonoraclecx-oracle

解决方案


您需要将参数传递给执行,如下所示:

cursor.execute(sql, [val])

或者

cursor.execute(sql, (val,))

推荐阅读