如何使用Pandas的Write_Frame将结果导出到cx_Oracle的Oracle数据库
我正在尝试把一个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进行测试并提供一些反馈,那就太好了!