Python Postgres仅在表存在时选择
我如何执行Python Postgres仅在表存在时选择,python,postgresql,select,exists,Python,Postgresql,Select,Exists,我如何执行 select * from my_table 但是,如果我的表不存在,请避免抛出错误 可能吗 更新:我在Odoo中工作,我在用户按下按钮时创建表,所以第一次安装模块时,表将不存在,我不想看到错误 我用python解决了这个问题,方法是: try: cr.execute(my_query) expetion: pass 如果我不够明确,我很抱歉,这是我在这里的第一个问题:你在某种函数中运行它吗?如果不是,整个问题就没有意义了。。。如果是-只需尝试捕获错误,如下所述: 您需要捕获42
select * from my_table
但是,如果我的表不存在,请避免抛出错误
可能吗
更新:我在Odoo中工作,我在用户按下按钮时创建表,所以第一次安装模块时,表将不存在,我不想看到错误
我用python解决了这个问题,方法是:
try: cr.execute(my_query)
expetion: pass
如果我不够明确,我很抱歉,这是我在这里的第一个问题:你在某种函数中运行它吗?如果不是,整个问题就没有意义了。。。如果是-只需尝试捕获错误,如下所述: 您需要捕获
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 ORM应用了Odoo自定义。这将确保您所做的任何修改(如表创建/修改)都应用于Postgresql数据库
因此,从CLI:
openerp服务器-u模块名称
或
openerp服务器-u all
通过检查数据库元数据/模式信息表来更新所有模块,这取决于Postgre存储它们的位置(即MySQL有保存此类信息的特定表,在Oracle中可以从视图中查询这些表)。你需要检查DBMS文档。你怎么可能从一个不存在的表中进行查询呢?奇怪的情况,但你可以先检查一下:你可以将它包装到一个函数中并捕获PL/pgSQL中的错误,但是你需要执行
select*from my_table_function()
如果没有表,查询应该返回什么?非常感谢。我从Python中的函数发送查询。Thanxs对您来说,我发现Python有一个try expetion函数来避免预期的错误,这看起来是完全不同的情况:)我的意思是在PL/pgSQL函数(在服务器端运行的过程)中捕获错误。您写的是如何在客户端捕获错误。不管怎样,很高兴我能帮上忙。