我有以下内容:
/* execute_py.c */
#include <stdio.h>
#include <stdlib.h>
#include "postgres.h"
#include "fmgr.h"
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
int
call_py()
{
printf("Executing your Python script...");
return system("python36 absolute/path/to/example.py");
}
和
# example.py
with open("absolute/path/to/test.txt", "w") as f:
f.write("hello world")
我将c脚本编译成execute_py.o
和execute_py.so
,然后在PostgreSQL服务器中创建了一个函数:
CREATE OR REPLACE FUNCTION call_py() RETURNS integer
AS 'absolute/path/to/execute_py', 'call_py'
LANGUAGE C STRICT;
并尝试运行这样的函数:
SELECT call_py();
该函数返回0.但是当我检查文件夹时,没有生成test.txt
。
我是C的新手并不确定发生了什么。寻求帮助。
提前致谢!
答案 0 :(得分:1)
抱歉,我很蠢,忘了向example.py
添加执行权限。