diff --git a/panoramix/models.py b/panoramix/models.py
index f893acca180db..1a5b074c5f97e 100644
--- a/panoramix/models.py
+++ b/panoramix/models.py
@@ -269,9 +269,13 @@ def sqlalchemy_uri_decrypted(self):
conn.password = self.password
return str(conn)
+ @property
+ def sql_url(self):
+ return '/panoramix/sql/{}/'.format(self.id)
+
@property
def sql_link(self):
- return 'SQL'.format(self.id)
+ return 'SQL'.format(self.sql_url)
class SqlaTable(Model, Queryable, AuditMixinNullable):
@@ -449,6 +453,14 @@ def query_bkp(
return QueryResult(
df=df, duration=datetime.now() - qry_start_dttm, query=sql)
+ @property
+ def sql_url(self):
+ return self.database.sql_url + "?table_id=" + str(self.id)
+
+ @property
+ def sql_link(self):
+ return 'SQL'.format(self.sql_url)
+
def query(
self, groupby, metrics,
granularity,
diff --git a/panoramix/static/panoramix.js b/panoramix/static/panoramix.js
index ff4f24d1889b7..679ea47c83784 100644
--- a/panoramix/static/panoramix.js
+++ b/panoramix/static/panoramix.js
@@ -468,6 +468,7 @@ var px = (function() {
editor.setValue(msg);
});
});
+ $("#select_star").click();
$("#run").click(function() {
$('#results').hide(0);
$('#loading').show(0);
diff --git a/panoramix/templates/panoramix/sql.html b/panoramix/templates/panoramix/sql.html
index 75d480229ced2..3cde931755fd2 100644
--- a/panoramix/templates/panoramix/sql.html
+++ b/panoramix/templates/panoramix/sql.html
@@ -18,6 +18,10 @@
border-radius: 5px;
background-color: #EEE;
}
+ div.alert {
+ padding: 5px;
+ margin: 0px;
+ }
.metadata {
overflow: auto;
width: 300px;
@@ -36,6 +40,7 @@
#results {
overflow: auto;
font-size: 12px;
+ margin-bottom: 5px;
}
#results table tbody tr td{
padding: 2px 4px;
@@ -56,7 +61,10 @@
diff --git a/panoramix/views.py b/panoramix/views.py
index 6b1ac686918a6..bf174e845dc2b 100644
--- a/panoramix/views.py
+++ b/panoramix/views.py
@@ -146,7 +146,8 @@ def pre_update(self, db):
class TableView(PanoramixModelView, DeleteMixin):
datamodel = SQLAInterface(models.SqlaTable)
- list_columns = ['table_link', 'database', 'changed_by', 'changed_on_']
+ list_columns = [
+ 'table_link', 'database', 'sql_link', 'changed_by_', 'changed_on_']
add_columns = ['table_name', 'database', 'default_endpoint', 'offset']
edit_columns = [
'table_name', 'is_featured', 'database', 'description', 'owner',
@@ -278,7 +279,7 @@ class DatasourceModelView(PanoramixModelView, DeleteMixin):
list_columns = [
'datasource_link', 'cluster', 'owner',
'created_by', 'created_on',
- 'changed_by', 'changed_on',
+ 'changed_by_', 'changed_on',
'offset']
related_views = [ColumnInlineView, MetricInlineView]
edit_columns = [
@@ -561,6 +562,7 @@ def sql(self, database_id):
return self.render_template(
"panoramix/sql.html",
database_id=database_id,
+ table_id=request.args.get('table_id'),
db=mydb)
@has_access
@@ -579,7 +581,7 @@ def select_star(self, table_id):
t = db.session.query(models.SqlaTable).filter_by(id=table_id).first()
fields = ", ".join(
[c.column_name for c in t.columns if not c.expression] or "*")
- s = "SELECT\n{fields}\nFROM {t.table_name}\nLIMIT 1000".format(**locals())
+ s = "SELECT\n{fields}\nFROM {t.table_name}".format(**locals())
return self.render_template(
"panoramix/ajah.html",
content=s)
@@ -608,12 +610,18 @@ def runsql(self):
.limit(limit)
)
sql= str(qry.compile(eng, compile_kwargs={"literal_binds": True}))
- df = read_sql_query(sql=sql, con=eng)
- content = df.to_html(
- index=False,
- classes=(
- "dataframe table table-striped table-bordered "
- "table-condensed sql_results"))
+ try:
+ df = read_sql_query(sql=sql, con=eng)
+ content = df.to_html(
+ index=False,
+ classes=(
+ "dataframe table table-striped table-bordered "
+ "table-condensed sql_results"))
+ except Exception as e:
+ content = (
+ '
'
+ "{}
"
+ ).format(e.message)
session.commit()
return content