如何在Memgraph中加载MAGE查询模块?如果查询模块是用Python或C编写的,会有区别吗?
查询模块可以使用C API(.so
模块(和Python API(.py
模块(编写。每个文件对应一个查询模块,其中包含一个或多个过程。这些文件的名称将映射到查询模块名称。例如,nxalg.py
中的过程node_connectivity
将映射到Cypher查询语言中的nxalg.node_connectivity()
。
启动Memgraph后,它将尝试从默认(/usr/lib/memgraph/query_modules and /var/lib/memgraph/internal_modules
(目录中的所有.so
和.py
文件加载查询模块。
MAGE模块位于/usr/lib/memgraph/query_modules
,自定义模块通过/var/lib/memgraph/internal_modules
的Memgraph实验室开发。
Memgraph可以从其他目录加载查询模块,如果它们的路径被添加到主配置文件(/etc/memgraph/memgraph.conf
(中的--query-modules-directory flag
或作为命令行参数提供(例如,当使用Docker时(。
如果您提供附加目录作为参数,请不要忘记包含/usr/lib/memgraph/query_modules
的路径,否则Memgraph启动时将不会加载该目录中的查询。
如果某个查询模块是在Memgraph已经运行时添加的,则需要在查询中使用mg.load("module_name")
过程手动加载:
CALL mg.load("py_example");
如果您想重新加载所有现有模块并加载任何新添加的模块,请使用mg.load_all()
:
CALL mg.load_all();
您可以在查询中使用mg.procedures()
过程来检查查询模块是否已加载:
CALL mg.procedures() YIELD *;