瀏覽代碼

[sqlalchemy] Avoid errors from auto explain query (#1936)

To avoid error poup on incomplete queries, i.e. autocomplete table name
still partial
Romain Rigaux 4 年之前
父節點
當前提交
3de09eef75
共有 1 個文件被更改,包括 9 次插入5 次删除
  1. 9 5
      desktop/libs/notebook/src/notebook/connectors/sql_alchemy.py

+ 9 - 5
desktop/libs/notebook/src/notebook/connectors/sql_alchemy.py

@@ -65,7 +65,7 @@ from string import Template
 
 from django.core.cache import caches
 from sqlalchemy import create_engine, inspect, Table, MetaData
-from sqlalchemy.exc import OperationalError, UnsupportedCompilationError, CompileError
+from sqlalchemy.exc import OperationalError, UnsupportedCompilationError, CompileError, ProgrammingError
 
 from desktop.lib import export_csvxls
 from desktop.lib.i18n import force_unicode
@@ -300,10 +300,14 @@ class SqlAlchemyApi(Api):
       if self.options['url'].startswith('bigquery://'):
         explanation = ''
       else:
-        result = connection.execute('EXPLAIN '+ statement)
-
-        explanation = "\n".join("{}: {},".format(k, v) for row in result for k, v in row.items())
-
+        try:
+          result = connection.execute('EXPLAIN '+ statement)
+          explanation = "\n".join("{}: {},".format(k, v) for row in result for k, v in row.items())
+        except ProgrammingError:
+          pass
+        except Exception as e:
+          LOG.debug('')
+          raise e
     return {
       'status': 0,
       'explanation': explanation,