我对Python相当陌生,在我的应用程序中,我使用Neomodel从Neo4j数据库加载和检索图形数据。
在我的一条路线中,我具有以下功能:
@api_mod.route('/users')
def get_users():
users = User.nodes #Returns a NodeSet
list_of_users = list(users) #Converts the NodeSet object to a list
return json.dumps(dict(users = [user for user in list_of_users]))
我的用户类定义如下:
class User(StructuredNode):
user_id = StringProperty(unique_index=True, required=True)
logged_in = RelationshipTo('Environment', 'LOGGED_IN', model=LoginAction)
launched = RelationshipTo('Application', 'LAUNCHED', model=LaunchedAction)
entered = RelationshipTo('Application', 'ENTERED', model=EnteredAction)
accessed = RelationshipTo('Application', 'ACCESSED', model=AccessedAction)
exited = RelationshipTo('Application', 'EXITED', model=ExitedAction)
logged_out = RelationshipTo('Environment', 'LOGGED_OUT', model=LogoutAction)
timed_out = RelationshipTo('Environment', 'TIME_OUT', model=TimeoutAction)
def toJSON(self):
return dict(user_id = self.user_id)
我期望我的 /users路由将返回一个包含数据库中所有用户的JSON对象。我明白NodeSet对象不能序列化为JSON对象,因此我试图将其转换为列表。但是现在,当我运行时,我得到以下错误:“TypeError:类型'User'的对象不是JSON可序列化的”
下面是整个堆栈跟踪:Traceback(最近一次调用last):File“/Users/mdebarros/.virtualenvs/useractivitylogs/lib/python3.6/site packages/flask/app.py”,1997行,在call return self中。wsgi_应用程序(环境,启动响应)文件“/Users/mdebarros/.virtualenvs/useractivitylogs/lib/python3.6/site packages/flask/app.py”,第1985行,在wsgi_应用程序响应=self中。handle_exception(e)File“/Users/mdebarros/.virtualenvs/useractivitylogs/lib/python3.6/site packages/flask/app.py”,第1540行,在reraise提升值文件的handle_exception reraise(exc_type,exc_value,tb)File“/Users/mdebarros/.virtualenvs/useractivitylogs/lib/python3.6/site packages/flask/.py/_compat.py”第33行“/Users/mdebarros/。virtualenvs/useractivitylogs/lib/python3。6/站点包/烧瓶/应用程序。py“,第1982行,在wsgi_app response=self.full_dispatch_request()文件“/Users/mdebarros/”中。virtualenvs/useractivitylogs/lib/python3。6/站点包/烧瓶/应用程序。py”,第1614行,完整的调度请求rv=self.handle\u user\u exception(e)文件“/Users/mdebarros/。virtualenvs/useractivitylogs/lib/python3。6/站点包/烧瓶/应用程序。py”,第1517行,在句柄用户异常重新释放(exc类型,exc值,tb)文件“/Users/mdebarros/”中。virtualenvs/useractivitylogs/lib/python3。6/现场包装/烧瓶/容器。py“,第33行,在重新提升值文件“/Users/mdebarros/”中。virtualenvs/useractivitylogs/lib/python3。6/站点包/烧瓶/应用程序。py“,第1612行,完整的调度请求rv=self.dispatch\u request()文件“/Users/mdebarros/。virtualenvs/useractivitylogs/lib/python3。6/站点包/烧瓶/应用程序。py“,第1598行,在调度_请求返回self.view_functionsrule.endpoint文件“/Users/mdebarros/pycharm项目/useractivitylogs/app/api/routes中。py”,第16行,在get_users return json.dumps(dict(users=[user for user in list_of_users])文件“/usr/local/ceral/python3/3.6中。2/Frameworks/Python。framework/Versions/3.6/lib/python3。6/json/init。py”,第231行,在转储返回_default_encoder.encode(obj)文件“/usr/local/ceral/python3/3.6中。2/Frameworks/Python。framework/Versions/3.6/lib/python3。6/json/encoder。py”,第199行,在encode chunks=self.iterencode(o,_one_shot=True)文件“/usr/local/ceral/python3/3.6中。2/Frameworks/Python。framework/Versions/3.6/lib/python3。6/json/encoder。py”,第257行,在iterencode返回_iterencode(o,0)文件“/usr/local/ceral/python3/3.6中。2/Frameworks/Python。framework/Versions/3.6/lib/python3。6/json/encoder。py“,第180行,默认为o.class.name)TypeError:类型为“User”的对象不可JSON序列化
关于如何处理此问题并返回适当的JSON对象的任何帮助或建议?
提前感谢您的任何帮助。
--医学博士
如您所知,用户类模型必须有一个方法来执行数据结构的转换(序列化)过程,要解决这个问题,一个解决方案是添加一个方法来执行此操作:
class User(StructuredNode):
user_id = StringProperty(unique_index=True, required=True)
logged_in = RelationshipTo('Environment', 'LOGGED_IN', model=LoginAction)
launched = RelationshipTo('Application', 'LAUNCHED', model=LaunchedAction)
entered = RelationshipTo('Application', 'ENTERED', model=EnteredAction)
accessed = RelationshipTo('Application', 'ACCESSED', model=AccessedAction)
exited = RelationshipTo('Application', 'EXITED', model=ExitedAction)
logged_out = RelationshipTo('Environment', 'LOGGED_OUT', model=LogoutAction)
timed_out = RelationshipTo('Environment', 'TIME_OUT', model=TimeoutAction)
@property
def serialize(self):
return {
'user_id': self.user_id,
'logged_in': self.logged_in,
'launched': self.launched,
'entered': self.entered,
'accessed': self.accessed,
'exited': self.exited,
'logged_out': self.logged_out,
'timed_out' : self.timed_out
}
现在,由于该方法已添加为属性,因此可以将属性称为属性:
@api_mod.route('/users')
def get_users():
users = User.nodes
list_of_users = list(users)
return json.dumps(dict(json_users = [user.serialize for user in list_of_users]))
我正在尝试计算配置单元中视图的平均/最小/最大记录计数 并试图实现如下内容: 但我收到一条错误消息: avg=5 min=4 max=6
我正在玩mongob,并将一些测试数据{name:"david"}输入到“用户”集合中。我通过键入mongoshell验证了数据在MongoDB中 结果: 在 node.js 脚本中,使用以下代码: 不返回任何结果 我没有发现任何错误,也没有错误。请告知
我希望PostgreSQL将查询结果作为一个JSON数组返回。给定 我想要类似于
我在使用MongoDB查询时遇到问题。每当我尝试通过ID或任何其他字段查找时,我总是得到零结果返回。我也很难使用“like”操作符。 我想以不区分大小写的方式查询书名。而且我知道你可以在MongoDB中这样做: 我试着装腔作势地做,但我不能让它起作用: 我看到控制台上打印出以下行:{“title”:{“$regex”:“/^harr.*/I”}} 我也尝试过一个文档,但也不成功: 结果却是零。 这
问题内容: 我有一个数据库,正在运行以下查询: 上面的查询一次返回两个结果集,我不能分别触发两个查询。如何在Java类中一次处理两个结果集? 问题答案: 正确的代码来处理JDBC语句返回的多个: 重要位: 并返回以表明语句的结果只是一个数字,而不是一个。 您需要检查以了解是否还有更多结果。 确保关闭结果集或使用
问题内容: 我有以下从数据库获取十六进制代码的函数 我的问题是我在回调函数中返回了结果,但getColour函数未返回任何内容。我希望getColour函数返回的值。 在我调用getColour的那一刻,它不返回任何内容 我尝试做类似的事情 但当然SELECT查询在返回值时已经完成 问题答案: 您只需要对回调中的db查询结果进行处理。就像。