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:34 UTC

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

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)
 ```