我的问题是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
所以基本上我的问题是我该怎么做才能将这些德语字符正确存储在数据库中?
提前致谢!
答案 0 :(得分:1)
我找到了一个相关主题,实际上回答了我的问题:
Python 2.7 connection to oracle loosing polish characters
您只需在创建数据库连接之前添加以下行:
os.environ["NLS_LANG"] = "GERMAN_GERMANY.UTF8"
有关不同语言所需字符串的其他文档,请访问Oracle网站: