73 lines
1.7 KiB
Python
73 lines
1.7 KiB
Python
import time
|
|
from ctypes import *
|
|
|
|
from taos import *
|
|
|
|
|
|
def fetch_callback(p_param, p_result, num_of_rows):
|
|
print("fetched ", num_of_rows, "rows")
|
|
p = cast(p_param, POINTER(Counter))
|
|
result = TaosResult(p_result)
|
|
|
|
if num_of_rows == 0:
|
|
print("fetching completed")
|
|
p.contents.done = True
|
|
result.close()
|
|
return
|
|
if num_of_rows < 0:
|
|
p.contents.done = True
|
|
result.check_error(num_of_rows)
|
|
result.close()
|
|
return None
|
|
|
|
for row in result.rows_iter(num_of_rows):
|
|
print(row)
|
|
p.contents.count += result.row_count
|
|
result.fetch_rows_a(fetch_callback, p_param)
|
|
|
|
|
|
def query_callback(p_param, p_result, code):
|
|
if p_result is None:
|
|
return
|
|
result = TaosResult(p_result)
|
|
if code == 0:
|
|
result.fetch_rows_a(fetch_callback, p_param)
|
|
result.check_error(code)
|
|
|
|
|
|
class Counter(Structure):
|
|
_fields_ = [("count", c_int), ("done", c_bool)]
|
|
|
|
def __str__(self):
|
|
return "{ count: %d, done: %s }" % (self.count, self.done)
|
|
|
|
|
|
def test_query(conn):
|
|
counter = Counter(count=0)
|
|
conn.query_a("select ts, current, voltage from power.meters", query_callback, byref(counter))
|
|
|
|
while not counter.done:
|
|
print(counter)
|
|
time.sleep(1)
|
|
print(counter)
|
|
conn.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
test_query(connect())
|
|
|
|
# possible output:
|
|
# { count: 0, done: False }
|
|
# fetched 8 rows
|
|
# 1538548685000 10.300000 219
|
|
# 1538548695000 12.600000 218
|
|
# 1538548696800 12.300000 221
|
|
# 1538548696650 10.300000 218
|
|
# 1538548685500 11.800000 221
|
|
# 1538548696600 13.400000 223
|
|
# 1538548685500 10.800000 223
|
|
# 1538548686500 11.500000 221
|
|
# fetched 0 rows
|
|
# fetching completed
|
|
# { count: 8, done: True }
|