我正在使用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页面上的在线示例的方式相同。
答案 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实现的接口与来自的定义 可选的加速器模块以及确切的定义 被覆盖的事先不知道。