0

If I have text that is saved in a Postgresql database is there any way to execute that text as Python code and potentially have it update the same database?

4

2 回答 2

1
  1. 这听起来很可怕。
  2. 是的,pp

PL/Python 是 postgres 的扩展,可让您在 python 中编写函数。您可能必须从包管理器安装扩展,或者在安装 postgres 时它可能已经捆绑(这取决于您apt-get install postgresql-plpython-9.1在 debian 中安装 postgres 的方式)。

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

CREATE EXTENSION plpythonu

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

CREATE FUNCTION eval_python(code text) RETURNS integer AS $$
    eval(code)
    return 1
$$ LANGUAGE plpythonu;

并为每个code字段执行它,my_table如下所示:

SELECT eval_python(code) FROM my_table;

阅读PL/python上的文档以获取有关如何从 python 与 db 交互的更多详细信息。

于 2013-05-09T20:19:12.220 回答
0

让我看看我是否理解您要完成的工作:

  1. 将临时用户代码存储在数据库的 varchar 字段中
  2. 读取并执行上述代码
  3. 允许所述代码影响有问题的数据库,比如说drop table ...

假设我明白了,你可以写一些

  1. 读取保存代码的表格(使用pyodbc或其他东西)
  2. 运行eval从数据库中提取的内容 - 这将让您执行任何代码,包括自我更新代码

你确定这是你想做的吗?

于 2013-05-09T20:40:34.197 回答