小编Cas*_*ona的帖子

返回Cypher路径查询中的唯一节点

我正在尝试检索链接到给定图节点的一组唯一元素.我有一些节点加载到Neo4j图数据库中,它们使用'TO'关系连接(例如节点6连接'TO'节点7).我已经能够检索我的起始节点和通过'TO'关系链接的其他路径之间的所有路径:

    start a = node(6)
    match p = (a)-[r:TO*..]->(b)
    return distinct EXTRACT(n in nodes(p): n);
Run Code Online (Sandbox Code Playgroud)

这给了我不同的输出路径,但仍然有重复的节点值,例如:

    +-------------------------------------------------------+
    | p                                                     |
    +-------------------------------------------------------+
    | [Node[6]{},:TO[5] {},Node[7]{}]                       |
    | [Node[6]{},:TO[5] {},Node[7]{},:TO[9] {},Node[11]{}]  | 
    etc...
Run Code Online (Sandbox Code Playgroud)

如何将这些路径组合到包含唯一路径值的单个列表中? 我尝试过使用COLLECT,但这只会产生上述结果的嵌套版本:

    start a = node(6) 
    match p = (a)-[r:TO*..]->(b) 
    return collect(distinct p);

    [[Node[6]{},:TO[5] {},Node[7]{}],[Node[6]{},:TO[5] {},Node[7]{},:TO[9] {}, ... ]    
Run Code Online (Sandbox Code Playgroud)

neo4j cypher

12
推荐指数
1
解决办法
2万
查看次数

加载和访问多个ctype实例

我有一些我在Python中使用的现有C代码.我可以使用以下命令加载库:

library_path = '/full/path/to/my/library.dylib'
lib1 = cdll.LoadLibrary(library_path)
Run Code Online (Sandbox Code Playgroud)

问题是我需要有这个库的多个实例,例如:

lib2 = cdll.LoadLibrary(library_path)
Run Code Online (Sandbox Code Playgroud)

这会创建第二个实例,但两者似乎都具有相同的内存位置(句柄相同).我试图复制和重命名library.dyliblibrary1.dyliblibrary2.dylib,但这并不改变他们的加载.问题是当我在lib1中调用函数时,修改了lib2中的全局变量和状态变量.例如:

lib1.open('/path/to/myfile')  # open a file for processing
lib1.run()   # This will do something with the file

lib2.open('/path/to/anotherfile')  # open a file for processing
lib2.run()   # This will do something with the file

lib1.close() # Closes library 1

lib2.run()   # This fails because lib1.close() also closes lib2
Run Code Online (Sandbox Code Playgroud)

有没有办法以这些库实例保持"包含"的方式加载它们?我试图加载的C代码是非常大的遗留软件......我需要做一些重写吗?

这是我发现解决类似问题的链接,但对我没那么帮助:http://www.gossamer-threads.com/lists/python/python/826703

任何帮助是极大的赞赏.

python ctypes

12
推荐指数
1
解决办法
841
查看次数

标签 统计

ctypes ×1

cypher ×1

neo4j ×1

python ×1