为什么我收到有关String未定义的错误?

时间:2014-04-23 17:55:17

标签: python redis

我正在使用redis对象映射器,当我尝试运行此代码时:

from redis import *
from rom import util
from rom import *

util.set_connection_settings(host='localhost', db=7)
class User(Model):
    uName=String(required=True)
    password=String(required=True)
    thisId=(random.random()*100)


user=User(uName='pfleet',password='pass')
user.save()
#todo, save session ID
user2=User.get_by(uName='pfleet')

出于某种原因,当我运行此代码时,我收到一个错误,上面写着“Name String not defined”,即使我输入的代码与ROM(redis对象映射器)github页面上的在线示例的方式相同。

1 个答案:

答案 0 :(得分:1)

感谢@ univerio的评论,似乎String只在from rom import *上导入了note:: this column type is only available in Python 2.x ,引自docstring

Text

对于python3.x,您需要改为使用class User(Model): uName=Text(required=True) password=Text(required=True)

from xxx import *

作为旁注,尽量不要使用{{1}}通配符导入 - 它真的是a bad practice

  

应该避免使用通配符导入(来自import *)   不清楚命名空间中存在哪些名称,令人困惑   读者和许多自动化工具。有一种防御用途   通配符导入的情况,即重新发布内部   接口作为公共API的一部分(例如,覆盖纯粹的   Python实现的接口与来自的定义   可选的加速器模块以及确切的定义   被覆盖的事先不知道。