用于PostgreSQL的Python存储过程

Ear*_*rlz 11 python postgresql stored-procedures plpgsql

我们仍然是Postgres的新手,来自Microsoft Sql Server.

我们现在想要编写一些存储过程.好吧,在努力获得比hello world在pl/pgsql中工作更复杂的东西之后,我们认为如果我们要学习一种新语言我们也可以学习Python更好,因为我们在大约15分钟内得到相同的查询(注意,我们都不知道python).

所以与pl/psql相比,我有一些问题.

  1. pl/Pythonu比pl/pgsql慢吗?
  2. 对于如何使用它编写好的存储过程,有什么"好的"参考吗?Postgres文档中的五个短页并没有真正告诉我们.
  3. 查询准备怎么样?应该一直使用吗?
  4. 如果我们将SD和GD数组用于大量查询计划,它是否会过满或对服务器产生负面影响?如果它太满了会自动删除旧值吗?
  5. 有没有希望它成为一种值得信赖的语言?

此外,我们的存储过程使用非常轻.现在我们只有4,但我们仍然试图从Sql Server特定的语法转换一些代码(例如变量,不能在存储过程之外的Postgres中使用)

Mag*_*der 9

  1. 取决于你正在做什么操作.
  2. 好吧,将它与一般的Python文档结合起来,这就是你拥有的东西.
  3. 不.再次,取决于你在做什么.如果您只打算运行一次查询,那么单独准备它就没有意义.
  4. 如果您使用持久连接,它可能会.但是只要连接关闭,它们就会被清除.
  5. 不见得.Sandboxing在Python中被打破,而AFAIK没有人真正有兴趣修复它.我听说有人说鹦鹉鹦鹉可能是最可行的方式,一旦我们有pl/parrot(我们还没有).

但最重要的是 - 如果您的存储过程要进行数据库工作,请使用pl/pgsql.如果要进行非数据库操作,例如与外部库交谈,则只使用pl/python.