仅当表存在时,Postgres才会选择

时间:2015-03-04 21:40:45

标签: python postgresql select exists

我该如何执行

select * from my_table

但如果my_table不存在,请避免抛出错误

有可能吗?

更新:我在Odoo中工作,当用户按下按钮时我创建了表格,所以在我的模块安装时,第一次表格将不存在,我不希望看到错误。

我使用:

在python中解决了它
try: cr.execute(my_query)
expetion: pass

如果我不够明确,我很抱歉,这是我的第一个问题:P

2 个答案:

答案 0 :(得分:0)

你在某种功能中运行它吗?如果没有,这整个问题毫无意义......如果是 - 只需尝试捕捉错误,如下所述:http://www.postgresql.org/docs/9.1/static/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING

您需要捕获42P01 undefined_table SQLSTATE。

所以在你的功能中你可以做到:

BEGIN
  SELECT * FROM sometable
EXCEPTION 
  WHEN undefined_table THEN
    -- Do something
  WHEN others THEN
    -- Do something else
END;

答案 1 :(得分:0)

作为附加说明(与Postgresql无关),当您启动Odoo服务器时,应确保设置-u标志以确保Odoo ORM应用您的odoo自定义。这可确保您所做的任何修改(例如表创建/修改)都应用于Postgresql DB。

所以,从CLI:

openerp-server -u module_name

openerp-server -u all

更新所有模块