You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2023/03/22 03:03:33 UTC

[iotdb] branch opti_python_example created (now d0fffcd14f)

This is an automated email from the ASF dual-hosted git repository.

haonan pushed a change to branch opti_python_example
in repository https://gitbox.apache.org/repos/asf/iotdb.git


      at d0fffcd14f Remove redundent template example in Python example

This branch includes the following new commits:

     new d0fffcd14f Remove redundent template example in Python example

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[iotdb] 01/01: Remove redundent template example in Python example

Posted by ha...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

haonan pushed a commit to branch opti_python_example
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit d0fffcd14f8779df6c21861308eb18bba112e8aa
Author: HTHou <hh...@outlook.com>
AuthorDate: Wed Mar 22 11:02:23 2023 +0800

    Remove redundent template example in Python example
---
 client-py/SessionExample.py                        |  60 +---
 client-py/iotdb/Session.py                         | 331 +++++++++++++--------
 .../UserGuide/API/Programming-Python-Native-API.md |  13 +-
 .../UserGuide/API/Programming-Python-Native-API.md |  15 +-
 4 files changed, 224 insertions(+), 195 deletions(-)

diff --git a/client-py/SessionExample.py b/client-py/SessionExample.py
index c71ecf9273..c0ede83b2a 100644
--- a/client-py/SessionExample.py
+++ b/client-py/SessionExample.py
@@ -365,7 +365,7 @@ with session.execute_last_data_query(
 # delete database
 session.delete_storage_group("root.sg_test_01")
 
-# create measurement node template
+# create template
 template = Template(name="template_python", share_time=False)
 m_node_1 = MeasurementNode(
     name="s1",
@@ -391,64 +391,6 @@ template.add_template(m_node_3)
 session.create_schema_template(template)
 print("create template success template_python")
 
-# create internal node template
-template_name = "treeTemplate_python"
-template = Template(name=template_name, share_time=True)
-i_node_gps = InternalNode(name="GPS", share_time=False)
-i_node_v = InternalNode(name="vehicle", share_time=True)
-m_node_x = MeasurementNode("x", TSDataType.FLOAT, TSEncoding.RLE, Compressor.SNAPPY)
-
-i_node_gps.add_child(m_node_x)
-i_node_v.add_child(m_node_x)
-template.add_template(i_node_gps)
-template.add_template(i_node_v)
-template.add_template(m_node_x)
-
-session.create_schema_template(template)
-print("create template success treeTemplate_python}")
-
-print(session.is_measurement_in_template(template_name, "GPS"))
-print(session.is_measurement_in_template(template_name, "GPS.x"))
-print(session.show_all_templates())
-
-# # append schema template
-data_types = [TSDataType.FLOAT, TSDataType.FLOAT, TSDataType.DOUBLE]
-encoding_list = [TSEncoding.RLE, TSEncoding.RLE, TSEncoding.GORILLA]
-compressor_list = [Compressor.SNAPPY, Compressor.SNAPPY, Compressor.LZ4]
-
-measurements_aligned_path = ["aligned.s1", "aligned.s2", "aligned.s3"]
-session.add_measurements_in_template(
-    template_name,
-    measurements_aligned_path,
-    data_types,
-    encoding_list,
-    compressor_list,
-    is_aligned=True,
-)
-# session.drop_schema_template("add_template_python")
-measurements_aligned_path = ["unaligned.s1", "unaligned.s2", "unaligned.s3"]
-session.add_measurements_in_template(
-    template_name,
-    measurements_aligned_path,
-    data_types,
-    encoding_list,
-    compressor_list,
-    is_aligned=False,
-)
-session.delete_node_in_template(template_name, "aligned.s1")
-print(session.count_measurements_in_template(template_name))
-print(session.is_path_exist_in_template(template_name, "aligned.s1"))
-print(session.is_path_exist_in_template(template_name, "aligned.s2"))
-
-session.set_schema_template(template_name, "root.python.set")
-print(session.show_paths_template_using_on(template_name))
-print(session.show_paths_template_set_on(template_name))
-session.unset_schema_template(template_name, "root.python.set")
-
-# drop template
-session.drop_schema_template("template_python")
-session.drop_schema_template(template_name)
-print("drop template success, template_python and treeTemplate_python")
 # close session connection.
 session.close()
 
diff --git a/client-py/iotdb/Session.py b/client-py/iotdb/Session.py
index 435e774b2a..02a64fab86 100644
--- a/client-py/iotdb/Session.py
+++ b/client-py/iotdb/Session.py
@@ -1205,6 +1205,30 @@ class Session(object):
             else:
                 raise e
 
+    def execute_statement(self, sql: str, timeout=0):
+        request = TSExecuteStatementReq(
+            self.__session_id, sql, self.__statement_id, timeout
+        )
+        try:
+            resp = self.__client.executeStatement(request)
+            status = resp.status
+            return Session.verify_success(status)
+        except TTransport.TException as e:
+            if self.reconnect():
+                try:
+                    request.sessionId = self.__session_id
+                    request.statementId = self.__statement_id
+                    resp = self.__client.executeStatement(request)
+                    status = resp.status
+                    return Session.verify_success(status)
+                except TTransport.TException as e1:
+                    logger.exception(
+                        "execution of non-query statement fails because: ", e1
+                    )
+                    raise e1
+            else:
+                raise e
+
     @staticmethod
     def value_to_bytes(data_types, values):
         format_str_list = [">"]
@@ -1563,13 +1587,20 @@ class Session(object):
         request = TSCreateSchemaTemplateReq(
             self.__session_id, template.get_name(), bytes_array
         )
-        status = self.__client.createSchemaTemplate(request)
-        logger.debug(
-            "create one template {} template name: {}".format(
-                self.__session_id, template.get_name()
-            )
-        )
-        return Session.verify_success(status)
+        try:
+            return Session.verify_success(self.__client.createSchemaTemplate(request))
+        except TTransport.TException as e:
+            if self.reconnect():
+                try:
+                    request.sessionId = self.__session_id
+                    return Session.verify_success(
+                        self.__client.createSchemaTemplate(request)
+                    )
+                except TTransport.TException as e1:
+                    logger.exception("create template fails because: ", e1)
+                    raise e1
+            else:
+                raise e
 
     def drop_schema_template(self, template_name: str):
         """
@@ -1577,44 +1608,20 @@ class Session(object):
         :param template_name: template name
         """
         request = TSDropSchemaTemplateReq(self.__session_id, template_name)
-        status = self.__client.dropSchemaTemplate(request)
-        logger.debug(
-            "drop one template {} template name: {}".format(
-                self.__session_id, template_name
-            )
-        )
-        return Session.verify_success(status)
-
-    def execute_statement(self, sql: str, timeout=0):
-        request = TSExecuteStatementReq(
-            self.__session_id, sql, self.__statement_id, self.__fetch_size, timeout
-        )
         try:
-            resp = self.__client.executeStatement(request)
-            status = resp.status
-            logger.debug("execute statement {} message: {}".format(sql, status.message))
-            if Session.verify_success(status) == 0:
-                if resp.columns:
-                    return SessionDataSet(
-                        sql,
-                        resp.columns,
-                        resp.dataTypeList,
-                        resp.columnNameIndexMap,
-                        resp.queryId,
-                        self.__client,
-                        self.__statement_id,
-                        self.__session_id,
-                        resp.queryDataSet,
-                        resp.ignoreTimeStamp,
+            return Session.verify_success(self.__client.dropSchemaTemplate(request))
+        except TTransport.TException as e:
+            if self.reconnect():
+                try:
+                    request.sessionId = self.__session_id
+                    return Session.verify_success(
+                        self.__client.dropSchemaTemplate(request)
                     )
-                else:
-                    return None
+                except TTransport.TException as e1:
+                    logger.exception("drop template fails because: ", e1)
+                    raise e1
             else:
-                raise RuntimeError(
-                    "execution of statement fails because: " + status.message
-                )
-        except TTransport.TException as e:
-            raise RuntimeError("execution of statement fails because: ", e)
+                raise e
 
     def add_measurements_in_template(
         self,
@@ -1643,13 +1650,20 @@ class Session(object):
             list(map(lambda x: x.value, encodings)),
             list(map(lambda x: x.value, compressors)),
         )
-        status = self.__client.appendSchemaTemplate(request)
-        logger.debug(
-            "append unaligned template {} template name: {}".format(
-                self.__session_id, template_name
-            )
-        )
-        return Session.verify_success(status)
+        try:
+            return Session.verify_success(self.__client.appendSchemaTemplate(request))
+        except TTransport.TException as e:
+            if self.reconnect():
+                try:
+                    request.sessionId = self.__session_id
+                    return Session.verify_success(
+                        self.__client.appendSchemaTemplate(request)
+                    )
+                except TTransport.TException as e1:
+                    logger.exception("append template fails because: ", e1)
+                    raise e1
+            else:
+                raise e
 
     def delete_node_in_template(self, template_name: str, path: str):
         """
@@ -1658,13 +1672,20 @@ class Session(object):
         :param path: measurements path
         """
         request = TSPruneSchemaTemplateReq(self.__session_id, template_name, path)
-        status = self.__client.pruneSchemaTemplate(request)
-        logger.debug(
-            "append unaligned template {} template name: {}".format(
-                self.__session_id, template_name
-            )
-        )
-        return Session.verify_success(status)
+        try:
+            return Session.verify_success(self.__client.pruneSchemaTemplate(request))
+        except TTransport.TException as e:
+            if self.reconnect():
+                try:
+                    request.sessionId = self.__session_id
+                    return Session.verify_success(
+                        self.__client.pruneSchemaTemplate(request)
+                    )
+                except TTransport.TException as e1:
+                    logger.exception("prune template fails because: ", e1)
+                    raise e1
+            else:
+                raise e
 
     def set_schema_template(self, template_name, prefix_path):
         """
@@ -1673,13 +1694,20 @@ class Session(object):
         :param prefix_path: prefix path
         """
         request = TSSetSchemaTemplateReq(self.__session_id, template_name, prefix_path)
-        status = self.__client.setSchemaTemplate(request)
-        logger.debug(
-            "set schema template to path{} template name: {}, path:{}".format(
-                self.__session_id, template_name, prefix_path
-            )
-        )
-        return Session.verify_success(status)
+        try:
+            return Session.verify_success(self.__client.setSchemaTemplate(request))
+        except TTransport.TException as e:
+            if self.reconnect():
+                try:
+                    request.sessionId = self.__session_id
+                    return Session.verify_success(
+                        self.__client.setSchemaTemplate(request)
+                    )
+                except TTransport.TException as e1:
+                    logger.exception("set template fails because: ", e1)
+                    raise e1
+            else:
+                raise e
 
     def unset_schema_template(self, template_name, prefix_path):
         """
@@ -1691,13 +1719,20 @@ class Session(object):
         request = TSUnsetSchemaTemplateReq(
             self.__session_id, prefix_path, template_name
         )
-        status = self.__client.unsetSchemaTemplate(request)
-        logger.debug(
-            "set schema template to path{} template name: {}, path:{}".format(
-                self.__session_id, template_name, prefix_path
-            )
-        )
-        return Session.verify_success(status)
+        try:
+            return Session.verify_success(self.__client.unsetSchemaTemplate(request))
+        except TTransport.TException as e:
+            if self.reconnect():
+                try:
+                    request.sessionId = self.__session_id
+                    return Session.verify_success(
+                        self.__client.unsetSchemaTemplate(request)
+                    )
+                except TTransport.TException as e1:
+                    logger.exception("unset template fails because: ", e1)
+                    raise e1
+            else:
+                raise e
 
     def count_measurements_in_template(self, template_name: str):
         """
@@ -1709,13 +1744,22 @@ class Session(object):
             template_name,
             TemplateQueryType.COUNT_MEASUREMENTS.value,
         )
-        response = self.__client.querySchemaTemplate(request)
-        logger.debug(
-            "count measurements template {}, template name is {}, count is {}".format(
-                self.__session_id, template_name, response.measurements
-            )
-        )
-        return response.count
+        try:
+            response = self.__client.querySchemaTemplate(request)
+            return response.count
+        except TTransport.TException as e:
+            if self.reconnect():
+                try:
+                    request.sessionId = self.__session_id
+                    response = self.__client.querySchemaTemplate(request)
+                    return response.count
+                except TTransport.TException as e1:
+                    logger.exception(
+                        "count measurements in template fails because: ", e1
+                    )
+                    raise e1
+            else:
+                raise e
 
     def is_measurement_in_template(self, template_name: str, path: str):
         """
@@ -1729,13 +1773,23 @@ class Session(object):
             TemplateQueryType.IS_MEASUREMENT.value,
             path,
         )
-        response = self.__client.querySchemaTemplate(request)
-        logger.debug(
-            "judge the path is measurement or not in template {}, template name is {}, result is {}".format(
-                self.__session_id, template_name, response.result
-            )
-        )
-        return response.result
+        try:
+            response = self.__client.querySchemaTemplate(request)
+            return response.result
+        except TTransport.TException as e:
+            if self.reconnect():
+                try:
+                    request.sessionId = self.__session_id
+                    response = self.__client.querySchemaTemplate(request)
+                    return response.result
+                except TTransport.TException as e1:
+                    logger.exception(
+                        "judge the path is measurement or not in template fails because: ",
+                        e1,
+                    )
+                    raise e1
+            else:
+                raise e
 
     def is_path_exist_in_template(self, template_name: str, path: str):
         """
@@ -1746,13 +1800,22 @@ class Session(object):
         request = TSQueryTemplateReq(
             self.__session_id, template_name, TemplateQueryType.PATH_EXIST.value, path
         )
-        response = self.__client.querySchemaTemplate(request)
-        logger.debug(
-            "judge the path is in template or not {}, template name is {}, result is {}".format(
-                self.__session_id, template_name, response.result
-            )
-        )
-        return response.result
+        try:
+            response = self.__client.querySchemaTemplate(request)
+            return response.result
+        except TTransport.TException as e:
+            if self.reconnect():
+                try:
+                    request.sessionId = self.__session_id
+                    response = self.__client.querySchemaTemplate(request)
+                    return response.result
+                except TTransport.TException as e1:
+                    logger.exception(
+                        "judge the path is in template or not fails because: ", e1
+                    )
+                    raise e1
+            else:
+                raise e
 
     def show_measurements_in_template(self, template_name: str, pattern: str = ""):
         """
@@ -1766,13 +1829,22 @@ class Session(object):
             TemplateQueryType.SHOW_MEASUREMENTS.value,
             pattern,
         )
-        response = self.__client.querySchemaTemplate(request)
-        logger.debug(
-            "show measurements in template {}, template name is {}, result is {}".format(
-                self.__session_id, template_name, response.measurements
-            )
-        )
-        return response.measurements
+        try:
+            response = self.__client.querySchemaTemplate(request)
+            return response.measurements
+        except TTransport.TException as e:
+            if self.reconnect():
+                try:
+                    request.sessionId = self.__session_id
+                    response = self.__client.querySchemaTemplate(request)
+                    return response.measurements
+                except TTransport.TException as e1:
+                    logger.exception(
+                        "show measurements in template fails because: ", e1
+                    )
+                    raise e1
+            else:
+                raise e
 
     def show_all_templates(self):
         """
@@ -1783,13 +1855,20 @@ class Session(object):
             "",
             TemplateQueryType.SHOW_TEMPLATES.value,
         )
-        response = self.__client.querySchemaTemplate(request)
-        logger.debug(
-            "show all template {}, measurements is {}".format(
-                self.__session_id, response.measurements
-            )
-        )
-        return response.measurements
+        try:
+            response = self.__client.querySchemaTemplate(request)
+            return response.measurements
+        except TTransport.TException as e:
+            if self.reconnect():
+                try:
+                    request.sessionId = self.__session_id
+                    response = self.__client.querySchemaTemplate(request)
+                    return response.measurements
+                except TTransport.TException as e1:
+                    logger.exception("show all template fails because: ", e1)
+                    raise e1
+            else:
+                raise e
 
     def show_paths_template_set_on(self, template_name):
         """
@@ -1799,13 +1878,20 @@ class Session(object):
         request = TSQueryTemplateReq(
             self.__session_id, template_name, TemplateQueryType.SHOW_SET_TEMPLATES.value
         )
-        response = self.__client.querySchemaTemplate(request)
-        logger.debug(
-            "show paths template set {}, on {}".format(
-                self.__session_id, response.measurements
-            )
-        )
-        return response.measurements
+        try:
+            response = self.__client.querySchemaTemplate(request)
+            return response.measurements
+        except TTransport.TException as e:
+            if self.reconnect():
+                try:
+                    request.sessionId = self.__session_id
+                    response = self.__client.querySchemaTemplate(request)
+                    return response.measurements
+                except TTransport.TException as e1:
+                    logger.exception("show paths template set on fails because: ", e1)
+                    raise e1
+            else:
+                raise e
 
     def show_paths_template_using_on(self, template_name):
         """
@@ -1817,10 +1903,17 @@ class Session(object):
             template_name,
             TemplateQueryType.SHOW_USING_TEMPLATES.value,
         )
-        response = self.__client.querySchemaTemplate(request)
-        logger.debug(
-            "show paths template using {}, on {}".format(
-                self.__session_id, response.measurements
-            )
-        )
-        return response.measurements
+        try:
+            response = self.__client.querySchemaTemplate(request)
+            return response.measurements
+        except TTransport.TException as e:
+            if self.reconnect():
+                try:
+                    request.sessionId = self.__session_id
+                    response = self.__client.querySchemaTemplate(request)
+                    return response.measurements
+                except TTransport.TException as e1:
+                    logger.exception("show paths template using on fails because: ", e1)
+                    raise e1
+            else:
+                raise e
diff --git a/docs/UserGuide/API/Programming-Python-Native-API.md b/docs/UserGuide/API/Programming-Python-Native-API.md
index f42b731302..3eafe54b34 100644
--- a/docs/UserGuide/API/Programming-Python-Native-API.md
+++ b/docs/UserGuide/API/Programming-Python-Native-API.md
@@ -316,22 +316,19 @@ session.execute_statement(sql)
 #### Create Schema Template
 The step for creating a metadata template is as follows
 1. Create the template class
-2. Adding child Node,InternalNode and MeasurementNode can be chose
+2. Adding MeasurementNode
 3. Execute create schema template function
 
 ```python
 template = Template(name=template_name, share_time=True)
 
-i_node_gps = InternalNode(name="GPS", share_time=False)
-i_node_v = InternalNode(name="vehicle", share_time=True)
 m_node_x = MeasurementNode("x", TSDataType.FLOAT, TSEncoding.RLE, Compressor.SNAPPY)
+m_node_y = MeasurementNode("y", TSDataType.FLOAT, TSEncoding.RLE, Compressor.SNAPPY)
+m_node_z = MeasurementNode("z", TSDataType.FLOAT, TSEncoding.RLE, Compressor.SNAPPY)
 
-i_node_gps.add_child(m_node_x)
-i_node_v.add_child(m_node_x)
-
-template.add_template(i_node_gps)
-template.add_template(i_node_v)
 template.add_template(m_node_x)
+template.add_template(m_node_y)
+template.add_template(m_node_z)
 
 session.create_schema_template(template)
 ```
diff --git a/docs/zh/UserGuide/API/Programming-Python-Native-API.md b/docs/zh/UserGuide/API/Programming-Python-Native-API.md
index da9b4acf1a..9f31cd832c 100644
--- a/docs/zh/UserGuide/API/Programming-Python-Native-API.md
+++ b/docs/zh/UserGuide/API/Programming-Python-Native-API.md
@@ -310,23 +310,20 @@ session.execute_statement(sql)
 
 #### 元数据模版接口
 ##### 构建元数据模版
-1. 首先构建Template类
-2. 添加子节点,可以选择InternalNode或MeasurementNode
+1. 首先构建 Template 类
+2. 添加子节点 MeasurementNode
 3. 调用创建元数据模版接口
 
 ```python
 template = Template(name=template_name, share_time=True)
 
-i_node_gps = InternalNode(name="GPS", share_time=False)
-i_node_v = InternalNode(name="vehicle", share_time=True)
 m_node_x = MeasurementNode("x", TSDataType.FLOAT, TSEncoding.RLE, Compressor.SNAPPY)
+m_node_y = MeasurementNode("y", TSDataType.FLOAT, TSEncoding.RLE, Compressor.SNAPPY)
+m_node_z = MeasurementNode("z", TSDataType.FLOAT, TSEncoding.RLE, Compressor.SNAPPY)
 
-i_node_gps.add_child(m_node_x)
-i_node_v.add_child(m_node_x)
-
-template.add_template(i_node_gps)
-template.add_template(i_node_v)
 template.add_template(m_node_x)
+template.add_template(m_node_y)
+template.add_template(m_node_z)
 
 session.create_schema_template(template)
 ```