【发布时间】:2012-04-12 13:40:29
【问题描述】:
我正在使用 python 开发一个小型 Web 服务:
- 烧瓶 (v. 0.8)
- 风暴 ORM (v. 0.19)
- 带有 mod_wsgi 的 Apache
我有一个自定义 HTTP 标头 Unison-UUID,我有时会使用它来检索数据库中的信息。
这是我遇到问题的(为简单起见稍微重写)sn-p:
uuid = flask.request.headers['Unison-UUID']
store = storm.locals.Store(my_database)
user = store.get(models.User, uuid)
User 类或多或少是这样的:
class User(Storm):
uuid = Unicode(primary=True)
# Other columns....
上面的代码以下列方式失败:
File "/Users/lum/Documents/unison-recsys/www/api/unison/unison.py", line 27, in decorated
user = g.store.get(models.User, uuid)
File "/Users/lum/Documents/unison-recsys/venv/lib/python2.6/site-packages/storm/store.py", line 165, in get
variable = column.variable_factory(value=variable)
File "/Users/lum/Documents/unison-recsys/venv/lib/python2.6/site-packages/storm/variables.py", line 396, in parse_set
% (type(value), value))
TypeError: Expected unicode, found <type 'str'>: '00000000-0000-0000-0000-000000000009'
我真的不明白为什么会发生这种情况以及我能做些什么。我以为Flask was 100% unicode。
我发现的一个快速解决方法是解码标头值,即uuid = uuid.decode('utf-8')。这真的是需要做的吗?这似乎有点骇人听闻。有没有办法直接获取unicode,不用手动“解码”?
【问题讨论】:
标签: python unicode flask werkzeug storm-orm