2025-08-26 08:28:10 +00:00
import warnings
from sqlalchemy . exc import SAWarning
# Suppress specific SQLAlchemy warnings
warnings . filterwarnings (
" ignore " ,
category = SAWarning ,
message = " Dialect taosws:taosws will not make use of SQL compilation caching "
)
2025-12-08 01:06:17 +00:00
# ANCHOR: connect_sqlalchemy
2025-08-26 08:28:10 +00:00
import taosws
from sqlalchemy import create_engine
from sqlalchemy import text
def create_connection_with_sqlalchemy ( ) :
engine = create_engine ( url = " taosws://root:taosdata@?hosts=localhost:6041,127.0.0.1:6041&timezone=Asia/Shanghai " )
conn = engine . connect ( )
return conn
# ANCHOR_END: connect_sqlalchemy
def create_db_table ( conn ) :
# ANCHOR: create_db
try :
conn . execute ( text ( " DROP DATABASE IF EXISTS power " ) )
conn . execute ( text ( " CREATE DATABASE IF NOT EXISTS power " ) )
conn . execute ( text ( " USE power " ) )
conn . execute ( text ( " CREATE STABLE IF NOT EXISTS power.meters (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) TAGS (location BINARY(64), groupId INT) " ) )
conn . execute ( text ( " CREATE TABLE IF NOT EXISTS power.`d0` USING power.`meters` (location, groupId) TAGS( ' Los Angles ' , 0) " ) )
except Exception as err :
print ( f ' Exception { err } ' )
raise err
# ANCHOR_END: create_db
def insert ( conn ) :
# ANCHOR: insert
sql = text ( """
INSERT INTO
power . d1001 USING power . meters ( location , groupId ) TAGS ( ' California.SanFrancisco ' , 2 )
VALUES ( NOW + 1 a , 10.30000 , 219 , 0.31000 )
( NOW + 2 a , 12.60000 , 218 , 0.33000 ) ( NOW + 3 a , 12.30000 , 221 , 0.31000 )
power . d1002 USING power . meters ( location , groupId ) TAGS ( ' California.SanFrancisco ' , 3 )
VALUES ( NOW + 1 a , 10.30000 , 218 , 0.25000 )
""" )
try :
affectedRows = conn . execute ( sql )
assert affectedRows . cursor . row_count == 4
except Exception as err :
print ( f ' Exception { err } ' )
raise err
# ANCHOR_END: insert
def query ( conn ) :
# ANCHOR: query
try :
result = conn . execute ( text ( " select * from power.meters " ) )
for row in result :
print ( row )
except Exception as err :
print ( f ' Exception { err } ' )
raise err
# ANCHOR_END: query
if __name__ == " __main__ " :
conn = create_connection_with_sqlalchemy ( )
create_db_table ( conn )
insert ( conn )
query ( conn )
if conn :
conn . close ( )