解决TypeError:'twophase' is an invalid keyword argumet for this function(附:pandas连接oracle)

问题描述

在这里插入图片描述
在这里插入图片描述

先来看看百度的解决方法,因为全是英文的,一开始没大看懂,没有想到是版本的问题,现在的cx_oracle已经更新到了7.0版本,sqlalchemy更新到了1.3.10版本.在这里插入图片描述

这篇文章大概的意思就是说当使用版本6.0b1或更高版本的DBAPI时,已经完全删除了对cx_Oracle的两阶段事务支持。,两阶段功能在任何情况下都无法在cx_Oracle 5.x下使用,并且cx_Oracle 6.x删除了此功能所依赖的连接级别的“ twophase”标志。

什么是twophase

twophase-两阶段提交 两阶段提交机制用于在分布式事务中保证数据的一致性.该功能自动启用,原子性保证多个库间的提交和回滚操作.

解决方法

也就是说我们在使用python,通过sqlalchemy+cx_Oracle去连接数据库的时候,一个支持twophase,一个不支持twophase,而我们现在所安装的cx_Oracle是7.0 版本,早已删除了twophase此功能所依赖的标志。而sqlalchemy还是依赖于这个标志。因此在运行的时候就会产生TypeError:‘twophase’ is an invalid keyword argumet for this function这个错误,而不是报xx.version的错误。所以问题解决。只需要升级一下版本就可以了

附:将pandas.df存入oracle
import cx_Oracle
from sqlalchemy import create_engine
import pandas as pd

engine = create_engine('oracle+cx_oracle://user:password@ip:port/mydb')
df.to_sql(name='my_table',con=engine,if_exists='replace',index=None)
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值