【腾讯云TDSQL-C Serverless 产品体验】使用 Python向TDSQL-C添加读取数据实现词云图
关于TDSQL-C Serverless介绍
TDSQL-C 是腾讯云自主研发的新一代云原生关系型数据库。
它融合了传统数据库、云计算和新硬件技术的优势,100%兼容 MySQL,为用户提供具有极致弹性、高性能、高可用性、高可靠性和安全性的数据库服务。
TDSQL-C 实现了超过百万每秒的高吞吐量,支持 PB 级海量分布式智能存储,并具备 Serverless 秒级扩缩能力,可加速企业数字化转型。
其 Serverless 服务是建立在腾讯云自研的新一代云原生关系数据库 TDSQL-C MySQL 版之上的无服务器架构实现,是一款全 Serverless 架构的云原生数据库。
Serverless 服务按实际使用的计算和存储资源进行收费,不用不付费,将腾讯云的云原生技术普惠用户。
适用的场景介绍
这类数据库实际是按量付费的,非常适合在测试和研发环境使用,如果业务存在明显的波动期,那么它的弹性伸缩功能也是比较适合的。对于一些小程序的云开发,小企业的一些网站建设也可以考虑此类数据库。
数据库购买
- 这里简单介绍下如何找到这款数据库
-
搜索进入腾讯云注册并登录
-
在搜索框输入 TDSQL-C MYSQL 版 , 点击搜索
-
点击立即选购
-
根据需要调整配置 注意 选择Serverless 的实例形态哦!!!
-
配置TDSQL-C 集群
-
根据实例信息连接数据库
- 如果你只是想体验下功能,那么可以通过如下链接进行免费体验:
https://mc.tencent.com/uQHh7pDI
数据库压测
- sysbench安装
我们通过sysbench做个简单的压测,看下数据库的一些性能指标
安装,通过如下命令
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh |bash yum install -y sysbench
通过如下命令进行检验:
sysbench --version

- 压测数据写入
通过执行如下命令,新建20张表,并且每个表中构建出 100万条测试数据,具体的host、port、user、password根据实际情况进行修改,新建的表也可以根据自己需要去建立。
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=gz-cynosdbmysql-grp-d27hp6vl.sql.tencentcdb.com --mysql-port=27529 --mysql-user=root --mysql-password=password --mysql-db=experience-15 --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable prepare
- 整体的读写测试
测试数据库的综合读写TPS,使用oltp_read_write模式
通过如下命令执行,可以看到控制台有压测数据输出,如果你想要输出到文件,也可以通过命令配置实现
因为目前实际访问是通过公网进行的,这里只是提供一个压测的思路,感兴趣可以自己在内网实践下
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=gz-cynosdbmysql-grp-d27hp6vl.sql.tencentcdb.com --mysql-port=27529 --mysql-user=root --mysql-password=password --mysql-db=experience-15 --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable run
控制台压测数据:

注意:
使用sysbench对数据库进行读写测试时,需要注意的几点:
-
- 选择合适的测试模式,如顺序读/写、随机读/写等,根据实际业务场景选用。
-
- 调整线程数和测试时长,逐步增加压力直到找到数据库的压力瓶颈。
-
- 测试前后要重新加载测试数据,避免缓存影响结果。
-
- 对照不同的数据库参数进行测试,如buffer pool大小、索引设置等。
-
- 记录不同压力情况下的指标,如TPS、延迟、资源利用率等。
- 只读性能测试
测试数据库的只读性能,使用oltp_read_write模式,执行命令如下:
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 -mysql-host=gz-cynosdbmysql-grp-d27hp6vl.sql.tencentcdb.com --mysql-port=27529 --mysql-user=root --mysql-password=password --mysql-db=experience-15 --tables=20 --table_size=1000000 oltp_read_only --db-ps-mode=disable run
- 插入性能测试
测试数据库的数据插入性能,使用模式:oltp_insert,命令如下:
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 -mysql-host=gz-cynosdbmysql-grp-d27hp6vl.sql.tencentcdb.com --mysql-port=27529 --mysql-user=root --mysql-password=password --mysql-db=experience-15 --tables=20 --table_size=1000000 oltp_insert --db-ps-mode=disable run
关于一些性能测试的情况,官方也是给出一些数据的,可以参考:

实际使用体验
使用 Python 向 TDSQL-C 添加读取数据 实现词云图


整个实践步骤如下:
- 准备python环境,安装依赖包
pip install PyMySQL==1.1.0
pip install pandas==2.0.1
pip install wordcloud==1.9.1.1
pip install numpy==1.23.5
pip install matplotlib==3.7.2
pip install Pillow==9.5.0
- 配置数据库连接信息
- 创建读取excel文件的函数
- 根据excel文件名创建数据库表名
- 将读取的excel 数据保存到数据库对应的表中
如下是通过读取excel后存入数据库的数据,在使用上与常规的数据库没有差别

- 读取数据库中存入的数据
- 执行函数,并生成词云图
如下为根据代码生成的词云图

完整代码如下:
import pymysql
import pandas as pd
import os
import wordcloud
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt# MySQL数据库连接配置
db_config = {'host': "gz-cynosdbmysql-grp-d27hp6vl.sql.tencentcdb.com", # 主机名'port': 27529, # 端口'user': "root", # 账户'password': "pass", # 密码'database': 'experience-16',}def create_table(table_name, columns):# 建立MySQL数据库连接conn = pymysql.connect(**db_config)cursor = conn.cursor()# 组装创建表的 SQL 查询语句query = f"CREATE TABLE IF NOT EXISTS {table_name} ("for col_name, col_type in columns.items():query += f"{col_name} {col_type}, "query = query.rstrip(", ") # 去除最后一个逗号和空格query += ")"# 执行创建表的操作cursor.execute(query)# 提交事务并关闭连接conn.commit()cursor.close()conn.close()def excelTomysql():path = '词频' # 文件所在文件夹files = [path + "/" + i for i in os.listdir(path)] # 获取文件夹下的文件名,并拼接完整路径for file_path in files:print(file_path)filename = os.path.basename(file_path)table_name = os.path.splitext(filename)[0] # 使用文件名作为表名,去除文件扩展名# 使用pandas库读取Excel文件data = pd.read_excel(file_path, engine="openpyxl", header=0) # 假设第一行是列名columns = {col: "VARCHAR(255)" for col in data.columns} # 动态生成列名和数据类型create_table(table_name, columns) # 创建表save_to_mysql(data, table_name) # 将数据保存到MySQL数据库中,并使用文件名作为表名print(filename + ' uploaded and saved to MySQL successfully')def save_to_mysql(data, table_name):# 建立MySQL数据库连接conn = pymysql.connect(**db_config)cursor = conn.cursor()# 将数据写入MySQL表中(假设数据只有一个Sheet)for index, row in data.iterrows():query = f"INSERT INTO {table_name} ("for col_name in data.columns:query += f"{col_name}, "query = query.rstrip(", ") # 去除最后一个逗号和空格query += ") VALUES ("values = tuple(row)query += ("%s, " * len(values)).rstrip(", ") # 动态生成值的占位符query += ")"cursor.execute(query, values)# 提交事务并关闭连接conn.commit()cursor.close()conn.close()def query_data():# 建立MySQL数据库连接conn = pymysql.connect(**db_config)cursor = conn.cursor()# 查询所有表名cursor.execute("SHOW TABLES")tables = cursor.fetchall()data = []dic_list = []table_name_list = []for table in tables:# for table in [tables[-1]]:table_name = table[0]table_name_list.append(table_name)query = f"SELECT * FROM {table_name}"# # 执行查询并获取结果cursor.execute(query)result = cursor.fetchall()if len(result) > 0:columns = [desc[0] for desc in cursor.description]table_data = [{columns[i]: row[i] for i in range(len(columns))} for row in result]data.extend(table_data)dic = {}for i in data:dic[i['word']] = float(i['count'])dic_list.append(dic)conn.commit()cursor.close()conn.close()return dic_list, table_name_listif __name__ == '__main__':##excelTomysql()方法将excel写入到mysqlexcelTomysql()print("excel写入到mysql成功!")# query_data()方法将mysql中的数据查询出来,每张表是一个dic,然后绘制词云result_list, table_name_list = query_data()print("从mysql获取数据成功!")for i in range(len(result_list)):maskImage = np.array(Image.open('background.PNG')) # 定义词频背景图# 定义词云样式wc = wordcloud.WordCloud(font_path='PingFangBold.ttf', # 设置字体mask=maskImage, # 设置背景图max_words=500, # 最多显示词数max_font_size=100) # 字号最大值# 生成词云图wc.generate_from_frequencies(result_list[i]) # 从字典生成词云# 保存图片到指定文件夹wc.to_file("词云图/{}.png".format(table_name_list[i]))print("生成的词云图【{}】已经保存成功!".format(table_name_list[i] + '.png'))# 在notebook中显示词云图plt.imshow(wc) # 显示词云plt.axis('off') # 关闭坐标轴plt.show() # 显示图像
总结
-
腾讯云 TDSQL-C MySQL Serverless 版是国内首个也是最大规模的 MySQL 无服务器数据库产品,其最大的特点和优势在于高度弹性灵活的使用方式,根据实际使用量进行计费,不使用则不收费,非常适合对业务量波动较大且难以预计的中小企业或个人开发者。这种按需使用和计费的模式,极大降低了使用成本和资源浪费。100%兼容MySQL,几乎无需改动代码,即可完成数据库的查询、应用和工具平滑迁移。
-
TDSQL-C MySQL Serverless 版特别适合一些刚刚上线或者业务量难以预测的新服务。对于业务负载存在周期性波动的应用也非常合适,可以根据高峰期和低峰期进行实时调整,无需固定预留资源,既灵活又经济。最高400TB存储,无服务器架构,自动扩缩容,轻松应对业务数据量动态变化和持续增长。
-
与传统数据库相比,TDSQL-C MySQL Serverless版可以实现秒级的启停容量扩缩容,根据实际使用情况弹性调整,并且实行按量计费模式,可以精确到秒级别计费,使用灵活而不会造成资源浪费。最高400TB存储,无服务器架构,自动扩缩容,轻松应对业务数据量动态变化和持续增长。
-
如果业务主要部署在微信生态内,例如微信小程序,TDSQL-C MySQL Serverless版可以与微信生态深度整合,为小程序等微信平台的开发者提供一站式的后端云数据库服务。开发和运维非常便捷高效。计算节点可根据业务需要快速升降配,秒级完成扩容,结合弹性存储,实现计算资源的成本最优。
-
对于已经存在的数据库或数据,TDSQL-C MySQL Serverless版也提供了多种快速迁移的方案。除了使用腾讯云提供的数据传输服务DTS迁移外,还可以通过mysqldump等命令行工具进行数据迁移,整个迁移过程可以做到快速便捷。

相关文章:
【腾讯云TDSQL-C Serverless 产品体验】使用 Python向TDSQL-C添加读取数据实现词云图
关于TDSQL-C Serverless介绍 TDSQL-C 是腾讯云自主研发的新一代云原生关系型数据库。 它融合了传统数据库、云计算和新硬件技术的优势,100%兼容 MySQL,为用户提供具有极致弹性、高性能、高可用性、高可靠性和安全性的数据库服务。 TDSQL-C 实现了超过百万每秒的高吞吐量,支持…...
服务器感染了.360、.halo勒索病毒,如何确保数据文件完整恢复?
导言: 数据的安全性至关重要,但威胁不断进化,.360、.halo勒索病毒是其中的令人担忧的勒索软件。本文91数据恢复将深入介绍.360、.halo勒索病毒,包括其威胁本质、数据恢复方法和如何采取预防措施来保护您的数据。 如果受感染的数据…...
BAT028:批量将文件修改日期后缀更新为最新修改日期
引言:编写批处理程序,实现批量将文件修改日期后缀更新为最新修改日期。 一、新建Windows批处理文件 参考博客: CSDNhttps://mp.csdn.net/mp_blog/creation/editor/132137544 二、写入批处理代码 1.右键新建的批处理文件,点击【…...
Visual Studio C++ 的 头文件和源文件
在Visual Studio C中,头文件(Header Files)和源文件(Source Files)是两种不同的文件类型,用于组织和管理C代码。 头文件(Header Files): 后缀名为.h或.hpp的文件…...
Scrapy框架中的Middleware扩展与Scrapy-Redis分布式爬虫
在爬虫开发中,Scrapy框架是一个非常强大且灵活的选择。在本文中,我将与大家分享两个关键的主题:Scrapy框架中的Middleware扩展和Scrapy-Redis分布式爬虫。这些主题将帮助你更好地理解和应用Scrapy框架,并提升你的爬虫开发技能。 …...
[论文笔记]Sentence-BERT[v2]
引言 本文是SBERT(Sentence-BERT)论文1的笔记。SBERT主要用于解决BERT系列模型无法有效地得到句向量的问题。很久之前写过该篇论文的笔记,但不够详细,今天来重新回顾一下。 BERT系列模型基于交互式计算输入两个句子之间的相似度是非常低效的(但效果是很好的)。当然可以通过…...
虚拟机ubantu系统突然重启失去网络
1.进入 root用户 cd /var/lib/NetworkManager然后查看网络服务状态 如果网络状态和我一样不可用 ,就先停止网络服务 service ModemManager stop#删除状态rm networker.stateservice ModemManager start此时右上交的网络标志回复正常...
三款经典的轮式/轮足机器人讲解,以及学习EG2133产生A/B/C驱动电机。个人机器人学习和开发路线(推荐)
1,灯哥开源(有使用指南,适合刚入门新手) 机械部分:2个foc无刷电机 硬件和软件部分:没有驱动板子。只有驱动器,主控板esp32和驱动器通过pwm直接通讯。驱动器板子上有蓝色电机接口,直…...
apache开启https
本文基于windows平台。 个人感觉使用apache配置起来比较繁琐,而使用upupw或者xmpp等集成开发工具更方便。 在httpd.conf中,将下一行的注释去掉:LoadModule ssl_module modules/mod_ssl.so。另外,千万不要注释掉下面的一行&#…...
绝地求生游戏缺少msvcp140.dll丢失打不开怎么办?这6个方法都能修复
计算机系统中,我们经常遇到各种错误和问题。其中,“MSCVCP140.DLL丢失”是一个常见的错误,它通常出现在运行某些程序或游戏时。这个DLL文件是Microsoft Visual C 2015 Redistributable的一部分,如果它丢失或损坏,可能会…...
【广州华锐互动】石油钻井井控VR互动实训系统
随着科技的不断发展,虚拟现实(VR)技术已经逐渐渗透到各个领域,为人们的生活和工作带来了前所未有的便利。在石油钻井行业,VR技术的应用也日益受到重视,为钻井工人提供了更加安全、高效的培训方式。 广州华锐…...
单链表算法经典OJ题
目录 1、移除链表元素 2、翻转链表 3、合并两个有序链表 4、获取链表的中间结点 5、环形链表解决约瑟夫问题 6、分割链表 1、移除链表元素 203. 移除链表元素 - 力扣(LeetCode) typedef struct ListNode LSNode; struct ListNode* remove…...
Picnic master project interview
picnic Picnic master project interview1. Topics1.1 Systematically identify similar/interchangeable articles1.2 Understanding changing customer behaviour 2. interview等后续 Picnic master project interview 1. Topics 1.1 Systematically identify similar/inte…...
nginx部署vue项目(访问路径加前缀)
nginx部署vue项目(访问路径加前缀) nginx部署vue项目,访问路径加前缀分为两部分: (1)修改vue项目; (2)修改nginx配置; vue项目修改 需注意,我这是vue-cli3配置&#x…...
element-ui中表格树类型数据的显示
项目场景: 1:非懒加载的情况 1:效果展示 2:问题描述以及解决 1:图片展示 2:html <-- default-expand-all 代表默认展开 如果不展开删除就行 --> <el-tableref"refsTable"v-loadin…...
【扩散模型】如何用最几毛钱生成壁纸
通过学习扩散模型了解到了统计学的美好,然后顺便记录下我之前文生图的基础流程~ 扩散模型简介 这次是在DataWhale的组队学习里学习的,HuggingFace开放扩散模型学习地址 扩散模型训练时通过对原图增加高斯噪声,在推理时通过降噪来得到原图&…...
零基础Linux_17(进程间通信)VSCode环境安装+进程间通信介绍+pipe管道mkfifo
目录 1. VSCode环境安装 1.1 使用VSCode 1.2 远程链接到Linux机器 1.3 VSCode调试 2. 进程间通讯介绍 2.1 进程间通讯的概念和意义 2.2 进程间通讯的策略和本质 3. 管道 3.1 管道介绍 3.2 匿名管道介绍 3.3 匿名管道示例代码 3.3.1 建立管道的pipe 3.3.2 匿名管道…...
Redis的BitMap使用
Redis的BitMap使用 Redis 为我们提供了位图这一数据结构,每个用户每天的登录记录只占据一位,365天就是365位,仅仅需要46字节就可存储,极大地节约了存储空间。 位图不是实际的数据类型,而是一组面向位的操作 在被视为…...
java并发编程之基础与原理1
java多线程基础 下面说一下线程的7种状态 下面我重点来说一下阻塞状态 阻塞状态是可以分很多种的: 下面用另外一张图来说明这种状态 简单说一下线程的启动原理 下面说一下java中的线程 java线程的异步请求方式 上面就会先把main执行出来,等阻塞结束之后…...
⟨A⟩ = Tr(ρA) 从数学上来讲什么意思
当给定一个具体的密度矩阵ρ和一个可观测量A时,我们可以通过数值计算来演示〈A〉 Tr(ρA) 的应用。 假设我们有以下密度矩阵和可观测量: ρ [0.6 0.3; 0.3 0.4] A [1 0; 0 -1] 我们首先计算ρA的乘积: ρA [0.6 0.3; 0.3 0.4] * [1 0…...
终极GBFR Logs指南:掌握碧蓝幻想Relink伤害分析的完整教程
终极GBFR Logs指南:掌握碧蓝幻想Relink伤害分析的完整教程 【免费下载链接】gbfr-logs GBFR Logs lets you track damage statistics with a nice overlay DPS meter for Granblue Fantasy: Relink. 项目地址: https://gitcode.com/gh_mirrors/gb/gbfr-logs …...
VASP和QE能带图画不好?可能是你的Python数据处理踩了这些坑
VASP和QE能带图绘制中的Python数据处理陷阱与解决方案 在材料计算领域,能带结构图是理解电子性质的关键可视化工具。许多研究人员在使用VASP或Quantum ESPRESSO(QE)完成第一性原理计算后,往往会选择Python进行数据处理和绘图。然而,这个看似标…...
Onekey:三分钟学会免费获取Steam游戏清单的完整指南
Onekey:三分钟学会免费获取Steam游戏清单的完整指南 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey Steam游戏清单获取从未如此简单!你是否曾经需要获取Steam游戏的Depot…...
Elk内存管理深度解析:如何在100字节RAM上运行JavaScript
Elk内存管理深度解析:如何在100字节RAM上运行JavaScript 【免费下载链接】elk A low footprint JavaScript engine for embedded systems 项目地址: https://gitcode.com/gh_mirrors/elk/elk Elk是一个为嵌入式系统设计的超轻量级JavaScript引擎,…...
3步掌握SMUDebugTool:AMD Ryzen处理器调试完全指南
3步掌握SMUDebugTool:AMD Ryzen处理器调试完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitco…...
国产手机涨价,苹果却开启了降价模式,618可能还要降,怎么打?
苹果的iPhone17可能是苹果史上降价最慢的手机了,这款手机上市以来降价速度非常缓慢,但是昨晚苹果CEO库克还中国的时候,苹果就官宣iPhone17Pro系列降价1000元,与国产手机因存储芯片涨价而涨价形成鲜明对比。值得注意的是当下iPhone…...
面试题详解:智能客服 Agent 系统全栈拆解——Rasa Pro、对话管理、意图识别、GraphRAG、Qwen 与 RAG 优化实战
1. 先把整个问题想清楚:智能客服系统到底在解决什么?1.1 它不是一个“会聊天的机器人”,而是一套能理解、决策、执行、反馈的系统很多人一提客服系统,就把重点全部放在大模型会不会回答上。但企业里真正的客服系统,从来…...
TaotokenCLI工具一键配置开发环境与团队协作
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 TaotokenCLI工具一键配置开发环境与团队协作 在团队协作开发中,统一大模型API的接入配置是一个常见痛点。每个成员手动…...
面试题详解:检索链路设计全攻略——RAG 检索架构、查询理解、多路召回、混合检索、Rerank、上下文构造与评估闭环
1. 为什么说检索链路设计,是 RAG 项目的“生命线”?1.1 大模型回答质量,很多时候不是模型决定的,而是证据决定的在 RAG 系统里,大模型像一个会组织语言的“回答器”,但它能不能答准,取决于它面前…...
告别背包焦虑!泰坦之旅终极装备管理神器完全指南
告别背包焦虑!泰坦之旅终极装备管理神器完全指南 【免费下载链接】TQVaultAE Extra bank space for Titan Quest Anniversary Edition 项目地址: https://gitcode.com/gh_mirrors/tq/TQVaultAE 还在为《泰坦之旅》中堆积如山的传奇装备无处存放而烦恼吗&…...
