Browse Source

[notebook] Add select operation to the mysql connector

Romain Rigaux 10 years ago
parent
commit
8f381b0

+ 1 - 1
desktop/libs/notebook/src/notebook/connectors/base.py

@@ -149,7 +149,7 @@ class Api(object):
   def get_log(self, notebook, snippet, startFrom=None, size=None):
     return 'No logs'
 
-  def autocomplete(self, database=None, table=None, column=None, nested=None):
+  def autocomplete(self, snippet, database=None, table=None, column=None, nested=None):
     return {}
 
   def progress(self, snippet, logs=None):

+ 21 - 6
desktop/libs/notebook/src/notebook/connectors/mysql.py

@@ -21,6 +21,7 @@ from desktop.lib.exceptions_renderable import PopupException
 from desktop.lib.i18n import force_unicode
 
 from librdbms.server import dbms
+from librdbms.server.mysql_lib import MySQLClient
 
 from notebook.connectors.base import Api, QueryError, QueryExpired
 
@@ -45,18 +46,32 @@ class MySqlApi(Api):
 
   def execute(self, notebook, snippet):
     query_server = dbms.get_query_server_config(server='mysql')
-    db = dbms.get(self.user, query_server)
-    table = db.execute_statement()
-    
-    print table
+#     db = dbms.get(self.user, query_server)
+    db = MySQLClient(query_server, self.user)
+
+    table = db.execute_statement(snippet['statement'])
     
+    data = table.rows()
+    has_result_set = data is not None
+
     return {
-      'result': table
+      'sync': True,
+      'has_result_set': has_result_set,
+      'result': {
+        'has_more': False,
+        'data': data if has_result_set else [],
+        'meta': [{
+          'name': col,
+          'type': '',
+          'comment': ''
+        } for col in table.columns] if has_result_set else [],
+        'type': 'table'
+      }
     }
 
   @query_error_handler
   def check_status(self, notebook, snippet):
-    return {'status': 'running'}
+    return {'status': 'available'}
 
   def _fetch_result(self, cursor):
     return {}