Python OrientDB元数据属性
我正在用python尝试orientdb。我已经创建了几个顶点,我注意到如果我在它们的属性名称前面加上@,当我在estudio web应用程序上搜索它们时,这些属性会显示在元数据部分。 这很有趣,所以我尝试通过我创建的元数据属性id查询顶点过滤。 在这样做时:Python OrientDB元数据属性,python,orientdb,pyorient,Python,Orientdb,Pyorient,我正在用python尝试orientdb。我已经创建了几个顶点,我注意到如果我在它们的属性名称前面加上@,当我在estudio web应用程序上搜索它们时,这些属性会显示在元数据部分。 这很有趣,所以我尝试通过我创建的元数据属性id查询顶点过滤。 在这样做时: select from V where @id = somevalue 我得到一个巨大的错误消息。我找不到一种查询这些自定义元数据属性的方法。您的问题是python/pyorient(基于您的其他问题,我假定您正在使用pyorient)
select from V where @id = somevalue
我得到一个巨大的错误消息。我找不到一种查询这些自定义元数据属性的方法。您的问题是python/pyorient(基于您的其他问题,我假定您正在使用pyorient) Pyorient试图将数据库字段映射到对象属性,但python文档说
标识符的有效字符与python 2.x中的相同:大写和小写字母A到Z、下划线以及除第一个字符外的数字0到9。
。因此,您不能使用“@”作为字段名,而期望pyorient工作
我快速浏览了一下PyaOrient的源代码,结果发现问题比上面更严重。。。 因此,PyaOrient假定任何以“@”字符开头的记录字段后跟一个类/集群名称,然后是一个字段的dict。我想您可以发布到,并建议上面的elif部分应该检查
content[key]
是dict还是“简单值”。如果它是一个dict,它应该像当前一样处理,否则它应该像一个字段一样处理,但是要从中去掉@
归根结底,在字段名中不使用@符号将是最简单的解决方案。您的问题在于python/pyorient(基于您的其他问题,我假设您正在使用pyorient) Pyorient试图将数据库字段映射到对象属性,但python文档说
标识符的有效字符与python 2.x中的相同:大写和小写字母A到Z、下划线以及除第一个字符外的数字0到9。
。因此,您不能使用“@”作为字段名,而期望pyorient工作
我快速浏览了一下PyaOrient的源代码,结果发现问题比上面更严重。。。 因此,PyaOrient假定任何以“@”字符开头的记录字段后跟一个类/集群名称,然后是一个字段的dict。我想您可以发布到,并建议上面的elif部分应该检查
content[key]
是dict还是“简单值”。如果它是一个dict,它应该像当前一样处理,否则它应该像一个字段一样处理,但是要从中去掉@
最终,在字段名中不使用@符号将是最简单的解决方案。
elif key[0:1] == '@':
# special case dict
# { '@my_class': { 'accommodation': 'hotel' } }
self.__o_class = key[1:]
for _key, _value in content[key].items():
self.__o_storage[_key] = _value