Postgres select 仅当 table 存在时
Postgres select only if table exists
如何执行
select * from my_table
但如果 my_table 不存在则避免抛出错误
可能吗?
更新:我在 Odoo 中工作,当用户按下按钮时我创建了 table,所以第一次安装我的模块时 table 将不存在并且我不想看到错误。
我在 python 中解决了这个问题,方法是:
try: cr.execute(my_query)
expetion: pass
对不起,如果我不够明确,这是我在这里的第一个问题:P
你运行它有某种功能吗?如果不是,整个问题就没有意义......如果是 - 只需尝试捕获错误,如下所述: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;
作为附加说明(与 Postgresql 无关),当您启动 Odoo 服务器时,您应该确保设置了 -u 标志以确保您的 odoo 定制被 Odoo ORM 应用。这确保您所做的任何修改,例如 table creation/modification 都应用于您的 Postgresql 数据库。
因此,从 CLI:
openerp-server -u module_name
或
openerp-server -u all
更新所有模块
如何执行
select * from my_table
但如果 my_table 不存在则避免抛出错误
可能吗?
更新:我在 Odoo 中工作,当用户按下按钮时我创建了 table,所以第一次安装我的模块时 table 将不存在并且我不想看到错误。
我在 python 中解决了这个问题,方法是:
try: cr.execute(my_query)
expetion: pass
对不起,如果我不够明确,这是我在这里的第一个问题:P
你运行它有某种功能吗?如果不是,整个问题就没有意义......如果是 - 只需尝试捕获错误,如下所述: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;
作为附加说明(与 Postgresql 无关),当您启动 Odoo 服务器时,您应该确保设置了 -u 标志以确保您的 odoo 定制被 Odoo ORM 应用。这确保您所做的任何修改,例如 table creation/modification 都应用于您的 Postgresql 数据库。
因此,从 CLI:
openerp-server -u module_name
或
openerp-server -u all
更新所有模块