当前位置: 首页 > 知识库问答 >
问题:

UnicodeEncodeError:在python中使用to_sql时

钱志
2023-03-14

我试图插入数据框到oracle数据库使用to_sql。下面是代码:

引擎=create_engine('甲骨文cx_oracle://'用户名':'密码'@'主机':'端口'/'sid)df.to_sql(name=table.lower(),模式=模式,con=引擎,if_exists='替换',index=False)

我得到下面的错误:UnicodeEncodeError:'ascii'编解码器不能编码字符'\u2013'在位置81:序数不在范围内(128)

有人能帮忙吗。

共有1个答案

岳风畔
2023-03-14

可能您的数据库是UTF8,并且您没有在会话中导出NLS_LANG变量:

因此,我会尝试首先将NLS_LANG导出到数据库中的字符集:

#export NLS_LANG=American_America.AL32UTF8

然后我会尝试更改您在cx_Oracle中的连接。连接方法

connection = cx_Oracle.connect("user/password@connectString",
    encoding="UTF-8", nencoding="UTF-8")

由于您正在使用to_sql您可以尝试此之前尝试您的连接

import os
os.environ["NLS_LANG"] = 'YOUR_NLS_LANG_VARIABLE'
 类似资料:
  • 问题内容: 我想用Pandas的to_sql函数创建一个具有主键的MySQL表(在mysql表中具有主键通常是一种好习惯),如下所示: 但这会创建一个没有任何主键(甚至没有任何索引)的表。 该文档提到了参数“ index_label”,该参数与“ index”参数结合可用于创建索引,但未提及主键的任何选项。 文献资料 问题答案: 免责声明:这个答案是实验性的,而不是实用的,但也许值得一提。 我发现

  • 问题内容: 试图使用python将pandas数据框写入MySQL表。以前一直在使用,但是将来会贬值,并希望开始过渡到使用SQLAlchemy引擎。 样例代码: 读取工作正常,但存在错误: DatabaseError:在SQL’SELECT name FROM sqlite_master WHERE type =’table’AND name = ?;’上执行失败:在字符串格式化期间参数数目错误

  • 问题内容: 我有一个使用100%Java编写的大型现有代码库,但是我想在它的一些新部分中使用Python。我需要进行一些文本和语言处理,而我宁愿使用Python和类似NLTK的库来执行此操作。 我知道Jython项目,但这似乎代表了一种从Python内部使用Java及其库的方法,而不是相反的方式-我对此是否错? 如果没有,那么在Java和Python之间进行交互的最佳方法是什么,这样(理想情况下)

  • 问题内容: 我正在浏览文档,并遇到了以下示例: 我不明白的是这里的lambda和学生是什么?可以用其他任何名称代替它们吗?和什么做的?这有点模棱两可,因为我以前从未遇到过。 问题答案: 从语义上说: 与此相同: 只是为函数定义提供了另一种语法。结果是一个函数对象,就像由创建的对象一样。但是,有些功能是功能无法完成的,例如定义新变量。它们非常适合(取决于您要问的人)创建较小的一次性功能,例如此功能。

  • 问题内容: 我需要使用python处理XSLT,目前我正在使用仅支持XSLT 1的lxml,现在我需要处理XSLT 2,有没有办法在Python中使用saxon XSLT处理器? 问题答案: 有两种可能的方法: 设置一个接受转换请求的HTTP服务,并通过从Java调用Saxon来实现它们;然后您可以通过HTTP通过Python发送转换请求 使用Saxon / C产品 (当前在预发行版中可用) :此

  • 问题内容: 我在玩耍时偶然发现了Python中的一个函数。我想不出需要此功能的情况,除了可能是语法糖。谁能举一个例子? 问题答案: 并且是一种方便快捷的方法,可以动态地获取一些源代码,也许要稍加修改然后再执行- 但是,它们从来不是最好的方法,尤其是在生产代码中,而不是“快速而又简单”脏”的原型&c。 例如,如果我不得不处理这样的动态Python源代码,那么我会使用ast模块-比得多(比它更安全(您