将Postgresql数据库中的文本作为Python代码执行

将Postgresql数据库中的文本作为Python代码执行,python,postgresql,Python,Postgresql,如果我有保存在Postgresql数据库中的文本,有没有办法将该文本作为Python代码执行,并可能让它更新相同的数据库 听起来很可怕 对 PL/Python是postgres的一个扩展,允许您用Python编写函数。您可能必须从软件包管理器安装扩展,或者在安装postgres时,它可能已经捆绑在一起(这取决于您如何在debian中安装postgresapt get install postgresql-plpython-9.1) 要在数据库中启用扩展,请首先使用psql运行: CREATE E

如果我有保存在Postgresql数据库中的文本,有没有办法将该文本作为Python代码执行,并可能让它更新相同的数据库

  • 听起来很可怕
  • PL/Python是postgres的一个扩展,允许您用Python编写函数。您可能必须从软件包管理器安装扩展,或者在安装postgres时,它可能已经捆绑在一起(这取决于您如何在debian中安装postgres
    apt get install postgresql-plpython-9.1

    要在数据库中启用扩展,请首先使用psql运行:

    CREATE EXTENSION plpythonu
    
    现在,您可以使用python指定函数,这样您就可以编写一个函数来执行该代码,如下所示:

    CREATE FUNCTION eval_python(code text) RETURNS integer AS $$
        eval(code)
        return 1
    $$ LANGUAGE plpythonu;
    
    并对
    my_table
    中的每个
    code
    字段执行它,如:

    SELECT eval_python(code) FROM my_table;
    

    请阅读上的文档,了解有关如何从python与db交互的更多详细信息。

    让我看看我是否了解您试图实现的目标:

  • 将临时用户代码存储在数据库的varchar字段中
  • 读取并执行所述代码
  • 允许所述代码影响相关数据库,例如
    删除表…
  • 假设我有它,你可以写一些

  • 读取包含代码的表(使用
    pyodbc
    或其他方法)
  • 对从数据库中提取的内容运行
    eval
    -这将允许您执行任何代码,包括自更新代码

  • 你确定这就是你想要做的吗?

    在你的plpy链接上没有看到任何提示它可以按我的要求做的内容。你有一个例子吗?更新了一个例子,但没有更多地了解真正的问题,它有点模糊。