最新TDengine中的python代码解释(1),大厂面试题汇总怎么写

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

print('client info:', conn.client_info)
print('server info:', conn.server_info)

这两行代码分别打印出连接到的客户端信息和服务器信息。这些信息可以帮助你了解当前使用的客户端库版本和服务器版本。
5. 关闭数据库连接:

conn.close()

使用close方法关闭与数据库的连接。这是一个良好的实践,可以释放服务器资源。
6. 主程序入口:

if __name__ == "\_\_main\_\_":
    test_connection()

这段代码检查当前脚本是否作为主程序运行(而不是作为模块导入到其他脚本中)。如果是,那么它会调用test_connection函数来执行上述的数据库连接测试。

整体来说,这个脚本展示了如何使用taos库来建立和关闭与TDengine数据库的连接,并获取一些基础的客户端和服务器信息。对于数据库操作的初学者来说,理解这些基本概念是非常重要的。

写入数据 - SQL 写入

import taos

lines = ["d1001,2018-10-03 14:38:05.000,10.30000,219,0.31000,'California.SanFrancisco',2",
         "d1004,2018-10-03 14:38:05.000,10.80000,223,0.29000,'California.LosAngeles',3",
         "d1003,2018-10-03 14:38:05.500,11.80000,221,0.28000,'California.LosAngeles',2",
         "d1004,2018-10-03 14:38:06.500,11.50000,221,0.35000,'California.LosAngeles',3",
         "d1002,2018-10-03 14:38:16.650,10.30000,218,0.25000,'California.SanFrancisco',3",
         "d1001,2018-10-03 14:38:15.000,12.60000,218,0.33000,'California.SanFrancisco',2",
         "d1001,2018-10-03 14:38:16.800,12.30000,221,0.31000,'California.SanFrancisco',2",
         "d1003,2018-10-03 14:38:16.600,13.40000,223,0.29000,'California.LosAngeles',2"]


def get\_connection() -> taos.TaosConnection:
    """
 create connection use firstEp in taos.cfg and use default user and password.
 """
    return taos.connect()


def create\_stable(conn: taos.TaosConnection):
    conn.execute("CREATE DATABASE power keep 36500")
    conn.execute("USE power")
    conn.execute("CREATE STABLE meters (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) "
                 "TAGS (location BINARY(64), groupId INT)")


# The generated SQL is:
# INSERT INTO d1001 USING meters TAGS('California.SanFrancisco', 2) VALUES ('2018-10-03 14:38:05.000', 10.30000, 219, 0.31000) ('2018-10-03 14:38:15.000', 12.60000, 218, 0.33000) ('2018-10-03 14:38:16.800', 12.30000, 221, 0.31000)
# d1002 USING meters TAGS('California.SanFrancisco', 3) VALUES ('2018-10-03 14:38:16.650', 10.30000, 218, 0.25000)
# d1003 USING meters TAGS('California.LosAngeles', 2) VALUES ('2018-10-03 14:38:05.500', 11.80000, 221, 0.28000) ('2018-10-03 14:38:16.600', 13.40000, 223, 0.29000)
# d1004 USING meters TAGS('California.LosAngeles', 3) VALUES ('2018-10-03 14:38:05.000', 10.80000, 223, 0.29000) ('2018-10-03 14:38:06.500', 11.50000, 221, 0.35000)

def get\_sql():
    global lines
    lines = map(lambda line: line.split(','), lines)  # [['d1001', ...]...]
    lines = sorted(lines, key=lambda ls: ls[0])  # sort by table name
    sql = "INSERT INTO "
    tb_name = None
    for ps in lines:
        tmp_tb_name = ps[0]
        if tb_name != tmp_tb_name:
            tb_name = tmp_tb_name
            sql += f"{tb\_name} USING meters TAGS({ps[5]}, {ps[6]}) VALUES "
        sql += f"('{ps[1]}', {ps[2]}, {ps[3]}, {ps[4]}) "
    return sql


def insert\_data(conn: taos.TaosConnection):
    sql = get_sql()
    affected_rows = conn.execute(sql)
    print("affected\_rows", affected_rows)  # 8


if __name__ == '\_\_main\_\_':
    connection = get_connection()
    try:
        create_stable(connection)
        insert_data(connection)
    finally:
        connection.close()


这个Python脚本利用taos库与TDengine数据库交互,展示了如何创建稳定表(超级表)、批量插入数据等操作。下面是一个详细的步骤解释,以帮助初学者理解每个部分的功能和目的。

导入taos
import taos

首先,导入taos库,它是TDengine的Python客户端,提供了与TDengine数据库交互的接口。

数据准备
lines = [...]

这里定义了一个名为lines的列表,包含了待插入数据库的数据。每个字符串代表一行数据,格式为"设备ID,时间戳,电流,电压,相位,位置,组ID"。

获取数据库连接 get_connection()
def get\_connection() -> taos.TaosConnection:
    return taos.connect()

这个函数使用taos.connect()无参数调用来建立数据库连接。这意味着它依赖于taos.cfg配置文件中的默认设置,如服务器地址、端口、用户名和密码。函数返回一个TaosConnection对象,代表与TDengine数据库的连接,用于执行后续的SQL操作。

创建稳定表 create_stable(conn: taos.TaosConnection)
def create\_stable(conn: taos.TaosConnection):
    conn.execute("CREATE DATABASE power keep 36500")
    conn.execute("USE power")
    conn.execute("CREATE STABLE meters (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) TAGS (location BINARY(64), groupId INT)")

  • 创建数据库:首先执行CREATE DATABASE power keep 36500,创建一个名为power的数据库,并设置数据保留期限为36500天。这表示数据将在数据库中保留100年,适用于长期数据存储的需求。
  • 使用数据库:通过USE power命令选择power数据库作为后续操作的目标。
  • 创建稳定表:执行CREATE STABLE meters...命令创建一个稳定表(超级表),定义了表的结构,包括时间戳(ts)、测量值(current, voltage, phase)和标签(location, groupId)。稳定表是一种模板,用于创建结构相同的子表,标签用于区分不同的子表。
生成SQL语句 get_sql()
def get\_sql():
    global lines
    lines = map(lambda line: line.split(','), lines)  # Split each line into a list
    lines = sorted(lines, key=lambda ls: ls[0])  # Sort by table name (device ID)
    sql = "INSERT INTO "
    tb_name = None
    for ps in lines:
        tmp_tb_name = ps[0]
        if tb_name != tmp_tb_name:
            tb_name = tmp_tb_name
            sql += f"{tb\_name} USING meters TAGS({ps[5]}, {ps[6]}) VALUES "
        sql += f"('{ps[1]}', {ps[2]}, {ps[3]}, {ps[4]}) "
    return sql

这个函数处理lines列表,为每一行数据生成SQL插入命令。

  • 分割数据:使用maplambda将每行数据(一个长字符串)分割成列表形式,方便访问每个字段。
  • 排序:按照设备ID(列表的第一个元素,即表名)对数据进行排序,以确保相同设备ID的数据被连续处理。
  • 构建SQL:遍历排序后的数据,动态构建INSERT INTO语句。当遇到新的设备ID时,会在SQL语句中添加新的插入段。对于每一行数据,都会添加一个VALUES部分,包含时间戳、电流、电压和相位值。使用TAGS指定每个子表的位置和组ID。

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值