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

jfeinauer pushed a commit to branch feature/improve-py-logging
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 34fa8db60173aae1467566a87cbec7f62915e67d
Author: Julian Feinauer <[email protected]>
AuthorDate: Sun Apr 4 10:00:18 2021 +0200

    [CLIENT-PY] Fixed print statements with logging output. Added Exceptions 
instead of empty returns.
---
 client-py/iotdb/Session.py               | 93 ++++++++++++++------------------
 client-py/iotdb/utils/IoTDBRpcDataSet.py | 14 ++---
 client-py/iotdb/utils/SessionDataSet.py  |  6 +--
 client-py/iotdb/utils/Tablet.py          |  7 +--
 4 files changed, 52 insertions(+), 68 deletions(-)

diff --git a/client-py/iotdb/Session.py b/client-py/iotdb/Session.py
index e7a3618..e2ef78e 100644
--- a/client-py/iotdb/Session.py
+++ b/client-py/iotdb/Session.py
@@ -15,7 +15,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-
+import logging
 import struct
 import time
 
@@ -53,6 +53,8 @@ from .thrift.rpc.ttypes import TSDeleteDataReq, 
TSProtocolVersion, TSSetTimeZone
 # from iotdb.rpc.ttypes import TSDeleteDataReq, TSProtocolVersion, 
TSSetTimeZoneReq
 from .utils.IoTDBConstants import TSDataType
 
+logger = logging.getLogger("IoTDB")
+
 
 class Session(object):
     SUCCESS_CODE = 200
@@ -94,7 +96,7 @@ class Session(object):
             try:
                 self.__transport.open()
             except TTransport.TTransportException as e:
-                print("TTransportException: ", e)
+                logger.exception("TTransportException!", exc_info=e)
 
         if enable_rpc_compression:
             self.__client = 
Client(TCompactProtocol.TCompactProtocol(self.__transport))
@@ -112,7 +114,7 @@ class Session(object):
             open_resp = self.__client.openSession(open_req)
 
             if self.protocol_version != open_resp.serverProtocolVersion:
-                print(
+                logger.exception(
                     "Protocol differ, Client version is {}, but Server version 
is {}".format(
                         self.protocol_version, open_resp.serverProtocolVersion
                     )
@@ -126,7 +128,7 @@ class Session(object):
 
         except Exception as e:
             self.__transport.close()
-            print("session closed because: ", e)
+            logger.exception("session closed because: ", exc_info=e)
 
         if self.__zone_id is not None:
             self.set_time_zone(self.__zone_id)
@@ -145,9 +147,9 @@ class Session(object):
         try:
             self.__client.closeSession(req)
         except TTransport.TException as e:
-            print(
+            logger.exception(
                 "Error occurs when closing session at server. Maybe server is 
down. Error message: ",
-                e,
+                exc_info=e
             )
         finally:
             self.__is_close = True
@@ -160,7 +162,7 @@ class Session(object):
         :param group_name: String, storage group name (starts from root)
         """
         status = self.__client.setStorageGroup(self.__session_id, group_name)
-        print("setting storage group {} message: {}".format(group_name, 
status.message))
+        logger.debug("setting storage group {} message: {}".format(group_name, 
status.message))
 
         return Session.verify_success(status)
 
@@ -178,7 +180,7 @@ class Session(object):
         :param storage_group_lst: List, paths of the target storage groups.
         """
         status = self.__client.deleteStorageGroups(self.__session_id, 
storage_group_lst)
-        print(
+        logger.debug(
             "delete storage group(s) {} message: {}".format(
                 storage_group_lst, status.message
             )
@@ -201,7 +203,7 @@ class Session(object):
             self.__session_id, ts_path, data_type, encoding, compressor
         )
         status = self.__client.createTimeseries(request)
-        print("creating time series {} message: {}".format(ts_path, 
status.message))
+        logger.debug("creating time series {} message: {}".format(ts_path, 
status.message))
 
         return Session.verify_success(status)
 
@@ -223,7 +225,7 @@ class Session(object):
             self.__session_id, ts_path_lst, data_type_lst, encoding_lst, 
compressor_lst
         )
         status = self.__client.createMultiTimeseries(request)
-        print(
+        logger.debug(
             "creating multiple time series {} message: {}".format(
                 ts_path_lst, status.message
             )
@@ -237,7 +239,7 @@ class Session(object):
         :param paths_list: List of time series path, which should be complete 
(starts from root)
         """
         status = self.__client.deleteTimeseries(self.__session_id, paths_list)
-        print(
+        logger.debug(
             "deleting multiple time series {} message: {}".format(
                 paths_list, status.message
             )
@@ -265,9 +267,9 @@ class Session(object):
         request = TSDeleteDataReq(self.__session_id, paths_list, timestamp)
         try:
             status = self.__client.deleteData(request)
-            print("delete data from {}, message: {}".format(paths_list, 
status.message))
+            logger.debug("delete data from {}, message: {}".format(paths_list, 
status.message))
         except TTransport.TException as e:
-            print("data deletion fails because: ", e)
+            logger.exception("data deletion fails because: ", e)
 
     def insert_str_record(self, device_id, timestamp, measurements, 
string_values):
         """ special case for inserting one row of String (TEXT) value """
@@ -280,7 +282,7 @@ class Session(object):
             device_id, timestamp, measurements, data_types, string_values
         )
         status = self.__client.insertStringRecord(request)
-        print(
+        logger.debug(
             "insert one record to device {} message: {}".format(
                 device_id, status.message
             )
@@ -305,7 +307,7 @@ class Session(object):
             device_id, timestamp, measurements, data_types, values
         )
         status = self.__client.insertRecord(request)
-        print(
+        logger.debug(
             "insert one record to device {} message: {}".format(
                 device_id, status.message
             )
@@ -333,7 +335,7 @@ class Session(object):
             device_ids, times, measurements_lst, type_values_lst, values_lst
         )
         status = self.__client.insertRecords(request)
-        print(
+        logger.debug(
             "insert multiple records to devices {} message: {}".format(
                 device_ids, status.message
             )
@@ -358,7 +360,7 @@ class Session(object):
             device_id, timestamp, measurements, data_types, values
         )
         status = self.__client.testInsertRecord(request)
-        print(
+        logger.debug(
             "testing! insert one record to device {} message: {}".format(
                 device_id, status.message
             )
@@ -386,7 +388,7 @@ class Session(object):
             device_ids, times, measurements_lst, type_values_lst, values_lst
         )
         status = self.__client.testInsertRecords(request)
-        print("testing! insert multiple records, message: 
{}".format(status.message))
+        logger.debug("testing! insert multiple records, message: 
{}".format(status.message))
 
         return Session.verify_success(status)
 
@@ -394,9 +396,7 @@ class Session(object):
         self, device_id, timestamp, measurements, data_types, values
     ):
         if (len(values) != len(data_types)) or (len(values) != 
len(measurements)):
-            print("length of data types does not equal to length of values!")
-            # could raise an error here.
-            return
+            raise RuntimeError("length of data types does not equal to length 
of values!")
         values_in_bytes = Session.value_to_bytes(data_types, values)
         return TSInsertRecordReq(
             self.__session_id, device_id, measurements, values_in_bytes, 
timestamp
@@ -406,9 +406,7 @@ class Session(object):
         self, device_id, timestamp, measurements, data_types, values
     ):
         if (len(values) != len(data_types)) or (len(values) != 
len(measurements)):
-            print("length of data types does not equal to length of values!")
-            # could raise an error here.
-            return
+            raise RuntimeError("length of data types does not equal to length 
of values!")
         return TSInsertStringRecordReq(
             self.__session_id, device_id, measurements, values, timestamp
         )
@@ -422,22 +420,18 @@ class Session(object):
             or (len(device_ids) != len(times))
             or (len(times) != len(values_lst))
         ):
-            print(
+            raise RuntimeError(
                 "deviceIds, times, measurementsList and valuesList's size 
should be equal"
             )
-            # could raise an error here.
-            return
 
         value_lst = []
         for values, data_types, measurements in zip(
             values_lst, types_lst, measurements_lst
         ):
             if (len(values) != len(data_types)) or (len(values) != 
len(measurements)):
-                print(
+                raise RuntimeError(
                     "deviceIds, times, measurementsList and valuesList's size 
should be equal"
                 )
-                # could raise an error here.
-                return
             values_in_bytes = Session.value_to_bytes(data_types, values)
             value_lst.append(values_in_bytes)
 
@@ -458,7 +452,7 @@ class Session(object):
         :param tablet: a tablet specified above
         """
         status = self.__client.insertTablet(self.gen_insert_tablet_req(tablet))
-        print(
+        logger.debug(
             "insert one tablet to device {} message: {}".format(
                 tablet.get_device_id(), status.message
             )
@@ -472,7 +466,7 @@ class Session(object):
         :param tablet_lst: List of tablets
         """
         status = 
self.__client.insertTablets(self.gen_insert_tablets_req(tablet_lst))
-        print("insert multiple tablets, message: {}".format(status.message))
+        logger.debug("insert multiple tablets, message: 
{}".format(status.message))
 
         return Session.verify_success(status)
 
@@ -514,15 +508,13 @@ class Session(object):
             or size != len(types_list)
             or size != len(values_list)
         ):
-            print(
+            raise RuntimeError(
                 "insert records of one device error: types, times, 
measurementsList and valuesList's size should be equal"
             )
-            return
 
         # check sorted
         if not Session.check_sorted(times_list):
-            print("insert records of one device error: timestamp not sorted")
-            return
+            raise RuntimeError("insert records of one device error: timestamp 
not sorted")
 
         request = self.gen_insert_records_of_one_device_request(
             device_id, times_list, measurements_list, values_list, types_list
@@ -530,7 +522,7 @@ class Session(object):
 
         # send request
         status = self.__client.insertRecordsOfOneDevice(request)
-        print("insert records of one device, message: 
{}".format(status.message))
+        logger.debug("insert records of one device, message: 
{}".format(status.message))
 
         return Session.verify_success(status)
 
@@ -543,11 +535,9 @@ class Session(object):
         ):
             data_types = [data_type.value for data_type in data_types]
             if (len(values) != len(data_types)) or (len(values) != 
len(measurements)):
-                print(
+                raise RuntimeError(
                     "insert records of one device error: deviceIds, times, 
measurementsList and valuesList's size should be equal"
                 )
-                # could raise an error here.
-                return
             values_in_bytes = Session.value_to_bytes(data_types, values)
             binary_value_list.append(values_in_bytes)
 
@@ -566,7 +556,7 @@ class Session(object):
         :param tablet: a tablet of data
         """
         status = 
self.__client.testInsertTablet(self.gen_insert_tablet_req(tablet))
-        print(
+        logger.debug(
             "testing! insert one tablet to device {} message: {}".format(
                 tablet.get_device_id(), status.message
             )
@@ -583,7 +573,7 @@ class Session(object):
         status = self.__client.testInsertTablets(
             self.gen_insert_tablets_req(tablet_list)
         )
-        print("testing! insert multiple tablets, message: 
{}".format(status.message))
+        logger.debug("testing! insert multiple tablets, message: 
{}".format(status.message))
 
         return Session.verify_success(status)
 
@@ -657,13 +647,12 @@ class Session(object):
         try:
             resp = self.__client.executeUpdateStatement(request)
             status = resp.status
-            print(
+            logger.debug(
                 "execute non-query statement {} message: {}".format(sql, 
status.message)
             )
             return Session.verify_success(status)
         except TTransport.TException as e:
-            print("execution of non-query statement fails because: ", e)
-            return -1
+            raise RuntimeError("execution of non-query statement fails 
because: ", e)
 
     @staticmethod
     def value_to_bytes(data_types, values):
@@ -705,9 +694,7 @@ class Session(object):
                 values_tobe_packed.append(len(value_bytes))
                 values_tobe_packed.append(value_bytes)
             else:
-                print("Unsupported data type:" + str(data_type))
-                # could raise an error here.
-                return
+                raise RuntimeError("Unsupported data type:" + str(data_type))
         format_str = "".join(format_str_list)
         return struct.pack(format_str, *values_tobe_packed)
 
@@ -717,22 +704,20 @@ class Session(object):
         try:
             resp = self.__client.getTimeZone(self.__session_id)
         except TTransport.TException as e:
-            print("Could not get time zone because: ", e)
-            raise Exception
+            raise RuntimeError("Could not get time zone because: ", e)
         return resp.timeZone
 
     def set_time_zone(self, zone_id):
         request = TSSetTimeZoneReq(self.__session_id, zone_id)
         try:
             status = self.__client.setTimeZone(request)
-            print(
+            logger.debug(
                 "setting time zone_id as {}, message: {}".format(
                     zone_id, status.message
                 )
             )
         except TTransport.TException as e:
-            print("Could not set time zone because: ", e)
-            raise Exception
+            raise RuntimeError("Could not set time zone because: ", e)
         self.__zone_id = zone_id
 
     @staticmethod
@@ -751,5 +736,5 @@ class Session(object):
         if status.code == Session.SUCCESS_CODE:
             return 0
 
-        print("error status is", status)
+        logger.debug("error status is", status)
         return -1
diff --git a/client-py/iotdb/utils/IoTDBRpcDataSet.py 
b/client-py/iotdb/utils/IoTDBRpcDataSet.py
index 6920245..1dd6cb5 100644
--- a/client-py/iotdb/utils/IoTDBRpcDataSet.py
+++ b/client-py/iotdb/utils/IoTDBRpcDataSet.py
@@ -17,10 +17,14 @@
 #
 
 # for package
+import logging
+
 from thrift.transport import TTransport
 from iotdb.thrift.rpc.TSIService import TSFetchResultsReq, TSCloseOperationReq
 from iotdb.utils.IoTDBConstants import TSDataType
 
+logger = logging.getLogger("IoTDB")
+
 
 class IoTDBRpcDataSet(object):
     TIMESTAMP_STR = "Time"
@@ -107,14 +111,13 @@ class IoTDBRpcDataSet(object):
                 status = self.__client.closeOperation(
                     TSCloseOperationReq(self.__session_id, self.__query_id)
                 )
-                print(
+                logger.debug(
                     "close session {}, message: {}".format(
                         self.__session_id, status.message
                     )
                 )
             except TTransport.TException as e:
-                print("close session {} failed because: 
".format(self.__session_id), e)
-                raise Exception
+                raise RuntimeError("close session {} failed because: 
".format(self.__session_id), e)
 
             self.__is_closed = True
             self.__client = None
@@ -173,8 +176,7 @@ class IoTDBRpcDataSet(object):
                     self.__value[i] = value_buffer[4 : 4 + length]
                     self.__query_data_set.valueList[i] = value_buffer[4 + 
length :]
                 else:
-                    print("unsupported data type {}.".format(data_type))
-                    # could raise exception here
+                    raise RuntimeError("unsupported data type 
{}.".format(data_type))
         self.__rows_index += 1
         self.__has_cached_record = True
 
@@ -196,7 +198,7 @@ class IoTDBRpcDataSet(object):
                 self.__query_data_set = resp.queryDataSet
             return resp.hasResultSet
         except TTransport.TException as e:
-            print("Cannot fetch result from server, because of network 
connection: ", e)
+            raise RuntimeError("Cannot fetch result from server, because of 
network connection: ", e)
 
     def is_null(self, index, row_num):
         bitmap = self.__current_bitmap[index]
diff --git a/client-py/iotdb/utils/SessionDataSet.py 
b/client-py/iotdb/utils/SessionDataSet.py
index 8437010..1bc421a 100644
--- a/client-py/iotdb/utils/SessionDataSet.py
+++ b/client-py/iotdb/utils/SessionDataSet.py
@@ -15,7 +15,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-
+import logging
 import struct
 
 from iotdb.utils.Field import Field
@@ -27,6 +27,7 @@ from iotdb.utils.RowRecord import RowRecord
 
 import pandas as pd
 
+logger = logging.getLogger("IoTDB")
 
 class SessionDataSet(object):
     def __init__(
@@ -114,8 +115,7 @@ class SessionDataSet(object):
                 elif data_type == TSDataType.TEXT:
                     field.set_binary_value(value_bytes)
                 else:
-                    print("unsupported data type {}.".format(data_type))
-                    # could raise exception here
+                    raise RuntimeError("unsupported data type 
{}.".format(data_type))
             else:
                 field = Field(None)
             out_fields.append(field)
diff --git a/client-py/iotdb/utils/Tablet.py b/client-py/iotdb/utils/Tablet.py
index 444f4e8..b6391b1 100644
--- a/client-py/iotdb/utils/Tablet.py
+++ b/client-py/iotdb/utils/Tablet.py
@@ -40,8 +40,7 @@ class Tablet(object):
         :param timestamps: List.
         """
         if len(timestamps) != len(values):
-            print("Input error! len(timestamps) does not equal to 
len(values)!")
-            # could raise an error here.
+            raise RuntimeError("Input error! len(timestamps) does not equal to 
len(values)!")
 
         if not Tablet.check_sorted(timestamps):
             sorted_zipped = sorted(zip(timestamps, values))
@@ -124,9 +123,7 @@ class Tablet(object):
                     values_tobe_packed.append(len(value_bytes))
                     values_tobe_packed.append(value_bytes)
             else:
-                print("Unsupported data type:" + str(self.__data_types[i]))
-                # could raise an error here.
-                return
+                raise RuntimeError("Unsupported data type:" + 
str(self.__data_types[i]))
 
         format_str = "".join(format_str_list)
         return struct.pack(format_str, *values_tobe_packed)

Reply via email to