繁体   English   中英

使用python将panda df插入Oracle数据库

[英]Insert panda df to Oracle database using python

我有一个带有文本列('testdf')的熊猫数据框。 我正在使用下面的代码插入到 oracle 数据库中的 TEST 表

from sqlalchemy import create_engine, Unicode, NVARCHAR
engine = create_engine("oracle+cx_oracle://{user}:{pw}@xxxxx.xxxxx.xx:1521/{db}"
                       .format(user="xxx",
                               pw="xxx",
                               db="xx"))
testdf.to_sql("TEST", con = engine, if_exists = 'append')

但它返回编码错误如下:

UnicodeEncodeError: 'charmap' codec can't encode character '\U0001f447' in position 237: character maps to <undefined>

我怎么解决这个问题? 我正在使用 Python 3、带有 Anaconda 的 Jupyter Notebook

这是一个常见的问题。 我认为这个答案很好 或者这个

问题是 Python 正在尝试将您的数据(以 Unicode 编码)转换为其他字符集以插入到数据库中,而其他字符集不包括\\U0001f447 (在您的数据\\U0001f447 )。 这个答案指出,如果你查看完整的错误回溯,而不仅仅是错误消息,它会告诉你它试图转换成哪个字符集。

有几种不同的选择。 最简单的方法可能是将?charset=utf8传递给连接字符串中的 cx_oracle。 这告诉 cx_oracle 将字符串作为 Unicode 发送。

"oracle+cx_oracle://{user}:{pw}@xxxxx.xxxxx.xx:1521/{db}?charset=utf8"

您也可以尝试设置 NLS_LANG 环境变量 这将告诉 Oracle 服务器期望来自您的 Python 应用程序的 Unicode。

os.environ['NLS_LANG']= 'AMERICAN_AMERICA.AL32UTF8'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM