如何使用Pandas的Write_Frame将结果导出到cx_Oracle的Oracle数据库

7 投票
1 回答
5135 浏览
提问于 2025-04-17 22:41

我正在尝试把一个Pandas的数据表导出到Oracle数据库。我发现了Pandas里的Write_Frame函数,听起来正是我需要的。

不过,我在网上搜索了很多次,就是无法让它正常工作。我已经导入了cx_Oracle,并且可以顺利连接到Oracle数据库,也能运行SQL查询,没有任何问题,但当我运行这个时,它给了我一个'NotImplementedError'的错误:

import pandas.io.sql as psql

 output = psql.write_frame(MyResults, name = 'MySchema.MyTable', con = MyCon, 
                           flavor = 'oracle', if_exists = 'replace')

到目前为止,我看到很多关于在sqlite和mysql上使用write_frame的例子,那是不是说如果flavor设置为'oracle'就不行呢?我试着把flavor改成mysql,但它又给了我一个错误,提示'Invalid SQL statement'??

有没有人能帮我解决这个问题?我更希望直接把结果导入数据库表,而不是先写到CSV文件再导入。

谢谢

1 个回答

2

为了进一步解释Andy Hayden的评论:在pandas版本0.13及之前的版本中,确实不支持oracle数据库(当时只支持sqlite和mysql)。

不过,在0.14版本中,sql模块进行了大幅度的改进(目前正在开发中)。现在它在后台使用了sqlalchemy,所以通常情况下,oracle数据库现在应该可以通过sqlalchemy来支持。想了解更多细节,可以查看开发文档:http://pandas-docs.github.io/pandas-docs-travis/io.html#io-sql。如果你能用oracle进行测试并提供一些反馈,那就太好了!

撰写回答