TDengine--连接脚本(python版)
django配置
TD_DATABASES = {
"default": {
"HOST": "62.234.221.57",
"PORT": 6030,
"USER": "vansing",
"PASSWORD": "vansing2022",
"DATABASE": "power",
"DB_API": taos,
"CHARSET": "UTF-8",
"MIN_CACHED": 1, # 连接池最小的空连接数量
"MAX_CACHED": 5, # 连接池最大可用连接数量
"MAX_SHARED": 5, # 连接池最大可共享连接数量
"MAX_CONNECTIONS": 10, # 最大允许连接数量
"BLOCKING": False, # 达到最大数量时是否阻塞
"MAX_USAGE": 10, # 单个连接最大复用次数
"SET_SESSION ": ["query"], # 用于传递到数据库的准备会话,如 [”set name UTF-8″]
}
}
单点连接
import taos
from taosrest import connect
from baler import settings
class TDEngineClent(object):
def __init__(self, client_type):
self.client_type = client_type
def __enter__(self):
"""
:param client_type:
"""
self.conn = self.__get_conn()
self.cursor = self.conn.cursor()
def __exit__(self, exc_type, exc_val, exc_tb):
self.conn.close()
self.cursor.close()
def __get_conn(self):
if self.client_type == 1:
return taos.connect(
host=settings.TD_DATABASES.get("default").get("HOST"),
port=settings.TD_DATABASES.get("default").get("PORT"),
user=settings.TD_DATABASES.get("default").get("USER"),
password=settings.TD_DATABASES.get("default").get("PASSWORD"),
database=settings.TD_DATABASES.get("default").get("DATABASE"),
timezone="Asia/Shanghai"
)
elif self.client_type == 2:
return connect(url="http://62.234.221.57:6030",
user="vansing",
password="vansing2022",
timeout=30)
else:
return None
cu_td_client = TDEngineClent(1)
# cu_td_rest_client = TDEngineClent(2)
连接池
import taos
from dbutils.persistent_db import PersistentDB
from taosrest import connect
from baler import settings
# 单例模式函数,用来修饰类
def singleton(cls, *args, **kw):
instances = {}
def _singleton():
if cls not in instances:
instances[cls] = cls(*args, **kw)
return instances[cls]
return _singleton
class TDEnginePoolClent(object):
__pool = None
def __init__(self, client_type):
self.client_type = client_type
def __enter__(self):
self.conn = self.__getconn()
self.cursor = self.conn.cursor()
def __exit__(self, exc_type, exc_val, exc_tb):
self.cursor.close()
self.conn.close()
# 创建数据库连接池
def __getconn(self):
if self.__pool is None:
if self.client_type == 1:
self.__pool = PersistentDB(
creator=settings.TD_DATABASES.get("default").get("DB_API"),
mincached=settings.TD_DATABASES.get("default").get("MIN_CACHED"),
maxcached=settings.TD_DATABASES.get("default").get("MAX_CACHED"),
maxshared=settings.TD_DATABASES.get("default").get("MAX_SHARED"),
maxconnections=settings.TD_DATABASES.get("default").get("MAX_CONNECTIONS"),
blocking=settings.TD_DATABASES.get("default").get("BLOCKING"),
maxusage=settings.TD_DATABASES.get("default").get("MAX_USAGE"),
setsession=settings.TD_DATABASES.get("default").get("SET_SESSION"),
host=settings.TD_DATABASES.get("default").get("HOST"),
port=settings.TD_DATABASES.get("default").get("PORT"),
user=settings.TD_DATABASES.get("default").get("USER"),
password=settings.TD_DATABASES.get("default").get("PASSWORD"),
database=settings.TD_DATABASES.get("default").get("DATABASE"),
db=settings.TD_DATABASES.get("default").get("DATABASE"),
use_unicode=False,
charset=settings.TD_DATABASES.get("default").get("DB_API")
)
return self.__pool.connection()
def getconn(self):
conn = self.__getconn()
cursor = conn.cursor()
return cursor, conn
def close(self):
self.conn.close()
# 获取连接池,实例化
# @singleton
# def get_my_connection(client_type):
# return TDEnginePoolClent(client_type)
td_client = TDEnginePoolClent(1)
# td_rest_client = TDEnginePoolClent(2)
基本使用
from utils.pool_tdb import td_client
from django.http import JsonResponse
from utils.TDClient import cu_td_client
def ceshi(request):
with td_client:
cursor, conn = td_client.getconn()
result = cursor.execute("select * from d1001 limit 10")
return JsonResponse({"123": "123"})
def ceshi2(request):
with cu_td_client:
result = cu_td_client.conn.query("select * from d1001 limit 10")
data = result.fetch_all()
for i in data:
print(i)
return JsonResponse({"123": "123"})
python防脱发技巧

浙公网安备 33010602011771号