繁体   English   中英

获取SQLAlchemy以使用cx_Oracle正确编码字符串

[英]Get SQLAlchemy to encode correctly strings with cx_Oracle

我的问题是SQLAlchemy似乎正在编写在我的Oracle数据库中未正确编码的文本。

我包含以下代码片段:

engine = create_engine("oracle://%s:%s@%s:%s/%s?charset=utf8"%(db_username, db_password, db_hostname,db_port, db_database), encoding='utf8')    
connection = engine.connect()
session    = Session(bind = connection)    

class MyClass(DeclarativeBase):
    """
    Model of the be persisted
    """        
    __tablename__ = "enconding_test"

    id              = Column(Integer, Sequence('encoding_test_id_seq'),primary_key = True)    

    blabla  = Column(String(255, collation='utf-8'), default = '')           
    autoload = True    

content = unicode("äüößqwerty","utf_8")
t = MyClass(blabla=content.encode("utf_8"))

session.add(t)
session.commit()

如果现在阅读数据库的内容,则会打印出类似以下内容的内容:

????????? qwerty

而不是原始的:

äüößqwerty

因此,基本上我的问题是我该怎么做才能将这些德语字符正确存储在数据库中?

提前致谢!

我找到了一个相关的话题,实际上回答了我的问题:

Python 2.7与Oracle的连接丢失了波兰字符

您只需在创建数据库连接之前添加以下行:

os.environ["NLS_LANG"] = "GERMAN_GERMANY.UTF8"

在Oracle网站上可以找到有关不同语言需要哪些字符串的其他文档:

Oracle Unicode支持文档

暂无
暂无

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

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