Skip to content

Commit

Permalink
support query
Browse files Browse the repository at this point in the history
  • Loading branch information
HTHou committed Sep 9, 2024
1 parent 2a015fc commit f622da2
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 1 deletion.
79 changes: 79 additions & 0 deletions iotdb-client/client-py/TableModelSessionExample.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#

from iotdb.Session import Session

# creating session connection.
ip = "127.0.0.1"
port_ = "6667"
username_ = "root"
password_ = "root"

# don't specify database in constructor
session = Session(ip, port_, username_, password_, sql_dialect="table")
session.open(False)
session.execute_non_query_statement("CREATE DATABASE test1")
session.execute_non_query_statement("CREATE DATABASE test2")
session.execute_non_query_statement("use test2")

# or use full qualified table name
session.execute_non_query_statement(
"create table test1.table1(region_id STRING ID, plant_id STRING ID, device_id STRING ID, model STRING ATTRIBUTE, temperature FLOAT MEASUREMENT, humidity DOUBLE MEASUREMENT) with (TTL=3600000)"
)
session.execute_non_query_statement(
"create table table2(region_id STRING ID, plant_id STRING ID, color STRING ATTRIBUTE, temperature FLOAT MEASUREMENT, speed DOUBLE MEASUREMENT) with (TTL=6600000)"
)

# show tables from current database
with session.execute_query_statement("SHOW TABLES") as session_data_set:
print(session_data_set.get_column_names())
while session_data_set.has_next():
print(session_data_set.next())

# show tables by specifying another database
# using SHOW tables FROM
with session.execute_query_statement("SHOW TABLES FROM test1") as session_data_set:
print(session_data_set.get_column_names())
while session_data_set.has_next():
print(session_data_set.next())

session.close()

# specify database in constructor
session = Session(
ip, port_, username_, password_, sql_dialect="table", database="test1"
)
session.open(False)

# show tables from current database
with session.execute_query_statement("SHOW TABLES") as session_data_set:
print(session_data_set.get_column_names())
while session_data_set.has_next():
print(session_data_set.next())

# change database to test2
session.execute_non_query_statement("use test2")

# show tables by specifying another database
# using SHOW tables FROM
with session.execute_query_statement("SHOW TABLES") as session_data_set:
print(session_data_set.get_column_names())
while session_data_set.has_next():
print(session_data_set.next())

session.close()
12 changes: 11 additions & 1 deletion iotdb-client/client-py/iotdb/Session.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ class Session(object):
DEFAULT_PASSWORD = "root"
DEFAULT_ZONE_ID = time.strftime("%z")
RETRY_NUM = 3
SQL_DIALECT = "tree"

def __init__(
self,
Expand All @@ -83,6 +84,8 @@ def __init__(
fetch_size=DEFAULT_FETCH_SIZE,
zone_id=DEFAULT_ZONE_ID,
enable_redirection=True,
sql_dialect=SQL_DIALECT,
database=None,
):
self.__host = host
self.__port = port
Expand All @@ -103,6 +106,8 @@ def __init__(
self.__enable_redirection = enable_redirection
self.__device_id_to_endpoint = None
self.__endpoint_to_connection = None
self.__sql_dialect = sql_dialect
self.__database = database

@classmethod
def init_from_node_urls(
Expand Down Expand Up @@ -180,12 +185,15 @@ def init_connection(self, endpoint):
else:
client = Client(TBinaryProtocol.TBinaryProtocolAccelerated(transport))

configuration = {"version": "V_1_0", "sql_dialect": self.__sql_dialect}
if self.__database is not None:
configuration["db"] = self.__database
open_req = TSOpenSessionReq(
client_protocol=self.protocol_version,
username=self.__user,
password=self.__password,
zoneId=self.__zone_id,
configuration={"version": "V_1_0"},
configuration=configuration,
)

try:
Expand Down Expand Up @@ -1364,6 +1372,8 @@ def execute_non_query_statement(self, sql):
else:
raise IoTDBConnectionException(self.connection_error_msg()) from None

if resp.database is not None:
self.__database = resp.database
return Session.verify_success(resp.status)

def execute_statement(self, sql: str, timeout=0):
Expand Down

0 comments on commit f622da2

Please sign in to comment.