You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2019/11/16 11:43:30 UTC

[incubator-iotdb] 01/05: Correct python example (#561)

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

qiaojialin pushed a commit to branch rel/0.9
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 4c1205c799ef7703f44b6b0541836dec1ba9a467
Author: Jackie Tien <ja...@foxmail.com>
AuthorDate: Sat Nov 16 11:23:50 2019 +0800

    Correct python example (#561)
    
    * correct python example
    
    (cherry picked from commit fe0b6275aa90329d665d04f60b82589804826c91)
---
 client-py/readme.md             |  2 +-
 client-py/src/client_example.py | 65 +++++++++++++++++++++--------------------
 2 files changed, 34 insertions(+), 33 deletions(-)

diff --git a/client-py/readme.md b/client-py/readme.md
index 9d849db..492b25c 100644
--- a/client-py/readme.md
+++ b/client-py/readme.md
@@ -20,7 +20,7 @@
 -->
 
 # Python connection
-## introduction
+## Introduction
 This is an example of how to connect to IoTDB with python, using the thrift rpc interfaces. Things 
 are almost the same on Windows or Linux, but pay attention to the difference like path separator.
 
diff --git a/client-py/src/client_example.py b/client-py/src/client_example.py
index 2d4188b..6926e17 100644
--- a/client-py/src/client_example.py
+++ b/client-py/src/client_example.py
@@ -17,6 +17,7 @@
 #
 
 import sys, struct
+
 sys.path.append("../target")
 
 from thrift.protocol import TBinaryProtocol
@@ -26,44 +27,45 @@ from rpc.TSIService import Client, TSCreateTimeseriesReq, TSInsertionReq, \
     TSBatchInsertionReq, TSExecuteStatementReq, \
     TS_SessionHandle, TSHandleIdentifier, TSOpenSessionReq, TSQueryDataSet, \
     TSFetchResultsReq, TSCloseOperationReq, \
-    TSCloseSessionReq, TSProtocolVersion
+    TSCloseSessionReq
+from rpc.ttypes import TSProtocolVersion
 
 TSDataType = {
-    'BOOLEAN' : 0,
-    'INT32' : 1,
-    'INT64' : 2,
-    'FLOAT' : 3,
-    'DOUBLE' : 4,
-    'TEXT' : 5
+    'BOOLEAN': 0,
+    'INT32': 1,
+    'INT64': 2,
+    'FLOAT': 3,
+    'DOUBLE': 4,
+    'TEXT': 5
 }
 
 TSEncoding = {
-    'PLAIN' : 0,
-    'PLAIN_DICTIONARY' : 1,
-    'RLE' : 2,
-    'DIFF' : 3,
-    'TS_2DIFF' : 4,
-    'BITMAP' : 5,
-    'GORILLA' : 6,
-    'REGULAR' : 7
+    'PLAIN': 0,
+    'PLAIN_DICTIONARY': 1,
+    'RLE': 2,
+    'DIFF': 3,
+    'TS_2DIFF': 4,
+    'BITMAP': 5,
+    'GORILLA': 6,
+    'REGULAR': 7
 }
 
 Compressor = {
-    'UNCOMPRESSED' : 0,
-    'SNAPPY' : 1,
-    'GZIP' : 2,
-    'LZO' : 3,
-    'SDT' : 4,
-    'PAA' : 5,
-    'PLA' : 6
+    'UNCOMPRESSED': 0,
+    'SNAPPY': 1,
+    'GZIP': 2,
+    'LZO': 3,
+    'SDT': 4,
+    'PAA': 5,
+    'PLA': 6
 }
 
 
 def convertQueryDataSet(queryDataSet, dataTypeList):
     bytes = queryDataSet.values
     row_count = queryDataSet.rowCount
-    time_bytes = bytes[:8*row_count]
-    value_bytes = bytes[8*row_count:]
+    time_bytes = bytes[:8 * row_count]
+    value_bytes = bytes[8 * row_count:]
     time_unpack_str = '>' + str(row_count) + 'q'
     records = []
     times = struct.unpack(time_unpack_str, time_bytes)
@@ -183,9 +185,9 @@ if __name__ == '__main__':
     # insert a single row
     values = ["1", "11", "1.1", "11.1", "TRUE", "\'text0\'"]
     timestamp = 1
-    status = client.insertRow(TSInsertionReq(deviceId, measurements,
-                                             values, timestamp, stmtId))
-    print(status.statusType)
+    status = client.insert(TSInsertionReq(deviceId, measurements,
+                                          values, timestamp, stmtId))
+    print(status.status)
 
     # insert multiple rows, this interface is more efficient
     values = bytearray()
@@ -217,7 +219,7 @@ if __name__ == '__main__':
     print(status.statusType)
 
     # execute deletion (or other statements)
-    resp = client.executeStatement(TSExecuteStatementReq(handle, "DELETE FROM root.group1 where time < 2"))
+    resp = client.executeStatement(TSExecuteStatementReq(handle, "DELETE FROM root.group1 where time < 2", stmtId))
     status = resp.status
     print(status.statusType)
 
@@ -225,8 +227,7 @@ if __name__ == '__main__':
     stmt = "SELECT * FROM root.group1"
     fetchSize = 2
     # this is also for resource control, make sure different queries will not use the same id at the same time
-    queryId = 1
-    resp = client.executeQueryStatement(TSExecuteStatementReq(handle, stmt))
+    resp = client.executeQueryStatement(TSExecuteStatementReq(handle, stmt, stmtId))
     # headers
     dataTypeList = resp.dataTypeList
     print(resp.columns)
@@ -235,6 +236,8 @@ if __name__ == '__main__':
     stmtHandle = resp.operationHandle
     status = resp.status
     print(status.statusType)
+
+    queryId = resp.operationHandle.operationId.queryId
     while True:
         rst = client.fetchResults(TSFetchResultsReq(stmt, fetchSize, queryId)).queryDataSet
         records = convertQueryDataSet(rst, dataTypeList)
@@ -248,5 +251,3 @@ if __name__ == '__main__':
 
     # and do not forget to close the session before exiting
     client.closeSession(TSCloseSessionReq(handle))
-
-