Python 官方文档:入门教程 => 点击学习
文章目录 前言学到什么?准备工作申请TDSQL数据库1. 点击登录腾讯云2. 点击立即选购 ,如下图所示3. 选购页面中的数据库配置选项如下4. 基础信息5. 配置完成后点击 右下角的立即购买
TDsql-C Mysql 版(TDSQL-C for mysql)是腾讯云自研的新一代云原生关系型数据库。融合了传统数据库、云计算与新硬件技术的优势,为用户提供具备高弹性、高性能、海量存储、安全可靠的数据库服务。TDSQL-C MySQL 版100%兼容 MySQL 5.7、8.0。实现超百万级 QPS 的高吞吐,最高 PB 级智能存储,保障数据安全可靠。
TDSQL-C MySQL 版采用存储和计算分离的架构,所有计算节点共享一份数据,提供秒级的配置升降级、秒级的故障恢复,单节点可支持百万级 QPS,自动维护数据和备份,最高以GB/秒的速度并行回档。
TDSQL-C MySQL 版既融合了商业数据库稳定可靠、高性能、可扩展的特征,又具有开源云数据库简单开放、高效迭代的优势。TDSQL-C MySQL 版引擎完全兼容原生 MySQL,您可以在不修改应用程序任何代码和配置的情况下,将 MySQL 数据库迁移至 TDSQL-C MySQL 版引擎。
本篇文章我们将一步一步的实现 使用 Python 向 TDSQL-C 添加读取数据 实现词云图
**注意 **:这里的实例形态我们选择
serverless
- 实例形态 **(Serverless)** - 数据库引擎 **(MYSQL)** - 地域 **(北京)** *地域这里根据自己的实际情况选择即可* - 主可用区 **(北京三区)** *主可用区这里根据自己的实际情况选择即可* - 多可用区部署 **(否)** - 传输链路 - 网络 - 数据库版本 **(MySQL5.7)** - 算力配置 **最小(0.25) , 最大(0.5)** - 自动暂停 **根据自己需求配置即可** - 计算计费模式 **(按量计费)** - 存储计费模式 **(按量计费)**
我的配置截图如下:
配置这里我们直接
设置自己的密码
以及表名大小写不敏感
即可 , 如下图所示
前往管理页面
开启外部
至此我们的准备工作就完成了, 其实还是蛮简单的哦!
所需数据 如下
下载地址放在文末有需要的可以去下载哦!
工程目录如下
讲解说明:
background.png
作为词云图背景图WordPhoto.py
为脚本文件TDSQL
打开数据库读写实例 找到相关配置 如图
# MySQL数据库连接配置db_config = { 'host': "XXXXXX", # 这里填写你自己申请的外部主机名 'port': xxxx, # 这里填写你自己申请的外部的端口 'user': "root", # 账户 'password': "", # 密码就是你自己创建实例时的密码 'database': 'tdsql', # 这里需要自己在自己创建的`tdsql`中创建数据库 , }
新建库
新建数据库
, 出现弹窗数据库名称
中写入你喜欢的数据库名称即可 ,这里我们用的是 tdsql
, 作为数据库名称 , 填写好数据库名称后,点击确定创建
即可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')
path
。os.listdir()
函数获取文件夹下的所有文件名,并拼接完整路径,存储到列表 files
中。for
循环遍历 files
列表中的每个文件路径,并打印出文件路径。os.path.basename()
函数获取文件名,并将文件名赋值给变量 filename
。os.path.splitext()
函数获取文件名的扩展名,并通过索引操作去除扩展名部分,得到表名,并将表名赋值给变量 table_name
。pandas
库的 read_excel()
函数读取 Excel 文件,并将数据存储到变量 data
中。在读取过程中,使用 openpyxl
引擎,并假设第一行是列名。columns
,其中字典的键为数据的列名,值为 “VARCHAR(255)” 数据类型。create_table()
函数,以 table_name
和 columns
作为参数,创建一个对应的表。save_to_mysql()
函数,以 data
和 table_name
作为参数,将数据保存到 MySQL 数据库中,并使用文件名作为表名。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()
db_config
提供。cursor
,用于执行SQL语句。table_name
。然后,通过 for
循环遍历 columns
字典中的每个键值对,分别将列名和数据类型添加到SQL查询语句中。cursor
执行创建表的操作,执行的SQL语句为组装好的查询语句。代码中使用了 pymysql
模块来建立MySQL数据库连接,并通过编写SQL语句来执行创建表的操作。具体的数据库连接参数在 db_config
变量中提供,而 columns
参数则是由之前的代码生成的一个字典,包含了表的列名和数据类型。
tdsql
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()
db_config
提供。cursor
,用于执行SQL语句。for
循环迭代,获取索引和行数据。table_name
。然后,通过 for
循环遍历数据的列名,将列名添加到SQL查询语句中。tuple(row)
将行数据转换为元组类型,并将值占位符 %s
动态生成相应数量的占位符。cursor.execute()
执行SQL查询语句,将查询语句中的占位符替换为实际的行数据。tdsql
数据 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_list
db_config
提供。cursor
,用于执行SQL语句。cursor.execute()
执行SQL查询语句 "SHOW TABLES"
,获取所有表名。cursor.fetchall()
获取查询结果,将结果存储在变量 tables
中。data
、dic_list
和 table_name_list
,用于存储查询结果的数据、字典和表名。table
,通过 for
循环迭代,获取表名并添加到 table_name_list
中。cursor.execute()
执行该查询语句。cursor.fetchall()
获取查询结果,将结果存储在变量 result
中。result
的长度大于0,则说明有数据,进行以下操作: cursor.description
获取查询结果的列名列表,并将列名存储在变量 columns
中。table_data
中。table_data
添加到 data
列表中。data
中的结果构建字典,并将字典存储在变量 dic
中。dic
添加到 dic_list
列表中。dic_list
和 table_name_list
。if __name__ == '__main__': excelTomysql() result_list, table_name_list = query_data() 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=800, # 最多显示词数 max_font_size=200) # 字号最大值 # 生成词云图 wc.generate_from_frequencies(result_list[i]) # 从字典生成词云 # 保存图片到指定文件夹 wc.to_file("词云图/{}.png".fORMat(table_name_list[i])) print("生成的词云图【{}】已经保存成功!".format(table_name_list[i] + '.png')) plt.imshow(wc) # 显示词云 plt.axis('off') # 关闭坐标轴 plt.show() # 显示图像
Image.open()
打开名为 ‘background.PNG’ 的背景图,并将其转换为NumPy数组,存储在变量 maskImage
中,作为词云的背景图。WordCloud
对象 wc
,设置字体路径、背景图、最多显示词数和字号最大值等参数。wc.generate_from_frequencies()
从 result_list[i]
的字典数据生成词云图。wc.to_file()
将生成的词云图保存为文件,文件名为 “词云图/{}.png”,其中 {}
表示对应的表名。plt.imshow()
显示词云图。plt.axis('off')
关闭坐标轴的显示。plt.show()
显示图像。import pymysqlimport pandas as pdimport osimport wordcloudimport numpy as npfrom PIL import Imageimport matplotlib.pyplot as plt# MySQL数据库连接配置db_config = { 'host': "XXXXXX", # 这里填写你自己申请的外部主机名 'port': xxxx, # 这里填写你自己申请的外部的端口 'user': "root", # 账户 'password': "", # 密码就是你自己创建实例时的密码 'database': 'tdsql', # 这里需要自己在自己创建的`tdsql`中创建数据库 , }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() result_list, table_name_list = query_data() 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=800, # 最多显示词数 max_font_size=200) # 字号最大值 # 生成词云图 wc.generate_from_frequencies(result_list[i]) # 从字典生成词云 # 保存图片到指定文件夹 wc.to_file("词云图/{}.png".format(table_name_list[i])) print("生成的词云图【{}】已经保存成功!".format(table_name_list[i] + '.png')) plt.imshow(wc) # 显示词云 plt.axis('off') # 关闭坐标轴 plt.show() # 显示图像
运行代码前 引入相关的包哦!
pip install pymysqlpip install pandaspip install wordcloudpip install numpypip install pillowpip install matplotlib
写入截图
数据库数据截图
生成词云图
将词云图存入到文件夹
TDSQL
体验完成, 考虑到当前这个业务没必要继续开启数据库了, 防止无效计费, 所以删除一下
如图点击销毁按钮
出现销毁实例的弹窗, 点击确定即可
资源在百度盘里 自取哦 !
链接: https://pan.baidu.com/s/1hClOJI07HUuGBQ2SwZfWjw 提取码: 5mm9
–来自百度网盘超级会员v7的分享
使用
TDSQL
时你会发现, 真的是无缝接入, 非常的丝滑, 当然也有些不足,希望可以改进哦!!
优点
缺点
注意 这个三个缺点我只是根据经验进行猜想, 如有错误还请及时指正哦!!
来源地址:https://blog.csdn.net/qq_33681891/article/details/132211647
--结束END--
本文标题: 【腾讯云 TDSQL-C Serverless 产品体验】 使用 Python 向 TDSQL-C 添加读取数据 实现词云图
本文链接: https://www.lsjlt.com/news/384075.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0