从数据库中检索后将unicode对象转换为列表

时间:2012-04-27 15:11:22

标签: python django select unicode

在Django中,我使用request.POST.getlist('tags')从选择字段中获取了一些值,所以当我将这些信息存储在MySQL中时,我最终得到的结果如下:u"['literature']"。我认为这是非常合理的,甚至是可取的,因为我不想使用另一个表来存储这些信息。显然,当我尝试检索该信息时会出现问题,因为正如预期的那样,我得到了这个:

u'['
u'u'
u"'"
u'l'
u'i'
u't'
u'e'
.
.
.

(假设这个标签是文学作品)。

如何将此unicode对象转换为Python列表?有更好的方法吗?。

提前致谢

3 个答案:

答案 0 :(得分:2)

简答:创建另一张表。

数据库旨在以特定方式使用,为什么要强制它们以不应该的方式存储信息?

还有其他解决方案,但最好的答案是按照预期使用数据库,从长远来看会更容易。

答案 1 :(得分:1)

在写入之前使用json转换为JSON,在阅读之后使用JSON转换为JSON。或者在野外使用JSONField的几种实现之一。

答案 2 :(得分:1)

这有帮助吗?

>>> import ast
>>> lst = ast.literal_eval(u"['literature']")
>>> lst
['literature']
>>> isinstance(lst, list)
True

但更好的方法是在存储为字符串之前正确序列化列表。你可以使用现有的pickle实现之一,json,或自己滚动(因为它不必是通用的,它可能是一个简单的oneliner,如"SENTINAL".join(list) ....不是我推荐后者,但是)