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?
问问题
151 次
2 回答
1
- 这听起来很可怕。
- 是的,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
让我看看我是否理解您要完成的工作:
- 将临时用户代码存储在数据库的 varchar 字段中
- 读取并执行上述代码
- 允许所述代码影响有问题的数据库,比如说
drop table ...
假设我明白了,你可以写一些
- 读取保存代码的表格(使用
pyodbc
或其他东西) - 运行
eval
从数据库中提取的内容 - 这将让您执行任何代码,包括自我更新代码
你确定这是你想做的吗?
于 2013-05-09T20:40:34.197 回答