Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我得到一个关于未定义字符串的错误?_Python_Redis - Fatal编程技术网

Python 为什么我得到一个关于未定义字符串的错误?

Python 为什么我得到一个关于未定义字符串的错误?,python,redis,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.ran

我正在使用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')

出于某种原因,当我运行这段代码时,会出现一个错误,显示“名称字符串未定义”,尽管我以与ROM(redis object mapper)github页面上的联机示例相同的方式键入了代码

感谢@univerio的评论,似乎
字符串
是由
从rom导入的*
仅在python2.x上导入的,引用自:

对于python3.x,您需要使用
Text

class User(Model):
    uName=Text(required=True)
    password=Text(required=True)
作为旁注,尽量不要使用xxx导入的
通配符导入*
通配符导入-实际上:

应避免通配符导入(从导入*),因为它们 使名称空间中存在的名称不清楚,这会造成混淆 读者和许多自动化工具。有一个合理的用途 通配符导入的情况,即重新发布内部 接口作为公共API的一部分(例如,覆盖纯API) 一个接口的Python实现,该接口的定义来自 可选加速器模块,以及将使用哪些定义 覆盖的内容事先不知道)


当在Python2.x上时,
String
列进入
rom
模块,所以
从rom导入*
应该导入它,所以我认为OP正在运行Python3,在这种情况下,他应该使用
Text
class User(Model):
    uName=Text(required=True)
    password=Text(required=True)