使用python插入到oracle表列中

2024-05-18 19:24:01 发布

您现在位置:Python中文网/ 问答频道 /正文

抱歉,如果这是重复的;我试图搜索谷歌和以前的堆栈溢出问题,但找不到答案。在

要连接的代码:

import cx_Oracle as o
con = o.connect('**', '**', '**')
con.version
cur = con.cursor()

加载DF的代码:

^{pr2}$

df有两列,COLUMN1为7位数字,COLUMN2为字符串

我有一个名为“MARSHALLTEST”的Oracle表,其中有COLUMN1 number(7)COLUMN2 varchar(200),我想INSERT INTO将相应的列放入该表中。在

这给了我一个错误消息:

rows = [tuple(x) for x in df.values]
cur.executemany('''INSERT INTO MARSHALLTEST (COLUMN1, COLUMN2) VALUES (:0,:1)''',rows)
con.commit()

错误消息:

---------------------------------------------------------------------------
UnicodeEncodeError                        Traceback (most recent call last)
<ipython-input-6-c4f7ad8118fd> in <module>()
      1 #statement = 'insert into MARSHALLTEST (OPPORTUNITY_INVOICE) values (df1)'
      2 rows = [tuple(x) for x in df.values]
----> 3 cur.executemany('''INSERT INTO MARSHALLTEST ('OPPORTUNITY_INVOICE', 'SF_OPP_ID') VALUES (:0,:1)''',rows)
      4 con.commit()

UnicodeEncodeError: 'ascii' codec can't encode character '\u201a' in position 22: ordinal not in range(128)

我也试过这个:

for s in df:
    statement = 'insert into MARSHALLTEST (OPPORTUNITY_INVOICE, SF_OPP_ID) values (s)' 
    cur.execute(statement)
    con.commit()

错误消息:

DatabaseError                             Traceback (most recent call last)
<ipython-input-15-2c2e69dfd9bf> in <module>()
      1 for s in df:
      2         statement = 'insert into MARSHALLTEST (OPPORTUNITY_INVOICE, SF_OPP_ID) values (s)'
----> 3         cur.execute(statement)
      4         con.commit()

DatabaseError: ORA-00947: not enough values

Tags: indfforinvoiceconrowsstatementcommit
1条回答
网友
1楼 · 发布于 2024-05-18 19:24:01

您可以使用以下代码直接将数据帧保存到表中: 导入cx®Oracle

从sqlalchemy导入类型,创建\u引擎

newconn=创建引擎('oracle+cx_oracle://username:pswd@host:端口/?服务名称=xxx')

在数据框到sql('testtablex',newconn,if\u exists='replace',index=False)

相关问题 更多 >

    热门问题