无法通过sqlalchemy查询特殊字符(ü,ß等)

时间:2017-09-26 13:03:27

标签: python-2.7 sqlalchemy

已解决

我必须设置环境变量NLS_LANG(oracle)喜欢这个:

os.environ["NLS_LANG"] = nls_lang

在我的例子中,nls_lang是GERMAN_GERMANY.AL32UTF8来获取所有德语变音符号和特殊字符。

我想从oracle数据库查询一些表数据。我使用以下部分连接到数据库:

            self.engine = create_engine('{}://{}:{}@{}:{}/{}'.format(type,
                                                                     user,
                                                                     password,
                                                                     server,
                                                                     port,
                                                                     dbname),
                                        echo=log,
                                        pool_size=4000,
                                        max_overflow=400)

要选择所需的列,我正在使用黑名单或白名单功能:

tmp_all = None
        # get session
        session = self.Session()
        # Blacklist
        if bwtyp == "B":
            tmp_all = session.query(*[c for c in tableo.c if not bwlist.is_column(schema, tabname, c.name)])
        # Whitelist
        if bwtyp == "W":
            tmp_all = session.query(*[c for c in tableo.c if bwlist.is_column(schema, tabname, c.name)])
        # close session
        session.close()
        return tmp_all

现在我像这样迭代我的结果集:

for row in tabledata.yield_per(buffersize).enable_eagerloads(False):

结果集几乎没问题,但区别在于:

  • 每个ü都显示为u。
  • 每个ß都显示为?。

调试器的屏幕截图 Figure 1

数据库的屏幕截图 Figure 2

[来自数据库的charset的截图] [3]

我做了很多,把charset放到了连接字符串等但没有任何效果。 也许你可以帮忙。非常感谢提前。 JR

0 个答案:

没有答案