Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Postgres仅在表存在时选择_Python_Postgresql_Select_Exists - Fatal编程技术网

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函数(在服务器端运行的过程)中捕获错误。您写的是如何在客户端捕获错误。不管怎样,很高兴我能帮上忙。