Python OrientDB元数据属性

Python OrientDB元数据属性,python,orientdb,pyorient,Python,Orientdb,Pyorient,我正在用python尝试orientdb。我已经创建了几个顶点,我注意到如果我在它们的属性名称前面加上@,当我在estudio web应用程序上搜索它们时,这些属性会显示在元数据部分。 这很有趣,所以我尝试通过我创建的元数据属性id查询顶点过滤。 在这样做时: select from V where @id = somevalue 我得到一个巨大的错误消息。我找不到一种查询这些自定义元数据属性的方法。您的问题是python/pyorient(基于您的其他问题,我假定您正在使用pyorient)

我正在用python尝试orientdb。我已经创建了几个顶点,我注意到如果我在它们的属性名称前面加上@,当我在estudio web应用程序上搜索它们时,这些属性会显示在元数据部分。 这很有趣,所以我尝试通过我创建的元数据属性id查询顶点过滤。 在这样做时:

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