【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图

目录

前言

一,TDSQL-C Serverless产品介绍

二,学到什么

三,准备阶段

 1.申请TDSQL-C数据库(第一种方式)

1.1 进行注册登录

1.2点击红圈进行选购

1.3选购页面的配置

1.4基础信息填写

2.申请TDSQL-C数据库(第二种方式成为测试者)

2.1如何成为测试者

2.2成为测试者的福利

福利1:

福利2: 

2.3测评方向

四,进行数据准备

五,使用PyCharm创建项目工程

六,连接TDSQL-C数据库

七,创建数据库

1.如图点击登录​编辑

2.点击 新建,然后点击新建库​编辑

3.点击新建数据库​编辑

4.定义自己的数据库名​编辑

5.出现自己定义的数据库名后​编辑

八,对制作词云图相关代码的讲解

(1).先导入库

(2).MySql数据库连接配置

(3)创建读取excel文件

(4)根据excel文件名创建数据库表名

(5)将读取的excel数据保存到数据库对应的表中

(6)读取数据库中存入的数据

(7)执行主函数,并生成词云图

(8)完整代码

九,词云效果显示

1.运行代码后的效果展示​编辑

 2.数据库的表展示​编辑

十,销毁数据库

十一,总结


前言

   自己是一位准大二学生,最近在学习数据库的相关知识,偶然间看到这个活动,决心参加并提高自己,文章如果有什么不好之处,忘各位勿喷。可以在评论区留言,给我一些建议,我会虚心接受,并改进文章。

   今天我给大家分享一下我对腾讯云TDSQL-C Serverless产品的体验流程以及体验过程的感受。腾讯云的TDSQL-C Serverless产品简直是互联网开发者的福音!

一,TDSQL-C Serverless产品介绍

     让我们来谈谈什么是TDSQL-C Serverless。这是一个基于云的关系型数据库,它“Serverless”为特点,意味着我无需担心硬件资源的配置和管理。它可以根据实际需求自动调整容量,并根据数据库的负载情况按需分配资源。对于我们来说,现在可以专注于开发应用,而不用担心数据库的管理。

TDSQL-C是腾讯云自研的新一代云原生关系型数据库,它整合了传统数据库、云计算和新硬件技术的优势。主要特点包括:

  1. 兼容性:TDSQL-C完全兼容MySQL,用户可以无缝迁移已有的MySQL应用到TDSQL-C上,无需修改代码。

  2. 弹性和高性能:TDSQL-C具备极致的弹性和高性能,能够支持超过百万的QPS(每秒查询率)。

  3. 高可用和高可靠:TDSQL-C通过分布式架构和自动数据备份机制,实现了高可用性和高可靠性,确保数据的安全和可靠性

  4. 安全性:TDSQL-C提供了多种安全措施,包括连接加密、访问控制、安全审计等,保障数据的安全性。

不仅如此,TDSQL-C还实现了PB级的海量分布式智能存储和Serverless秒级伸缩功能,为企业加速完成数字化转型提供了强大的支持。

     针对Serverless服务,它是TDSQL-C MySQL版的无服务器架构版本,完全基于Serverless架构,提供按实际计算和存储资源使用量计费的方式,通俗来说就是和水电费一样,用多少花多少钱,这意味着我们只需按实际使用的资源付费,避免了闲置资源的浪费,同时也使更多人受益。

二,学到什么

1.如何申请TDSQL-C数据库:注册腾讯云账号及准备工作,进入腾讯云控制台。

2.如何进行配置TDSQL-C数据库:选购与页面管理等相关内容,以及如何参加这个测评,获取测评资格。

3.进行项目配置:链接并配置TDSQL-C数据库。

4.对制作词云图相关代码的讲解:创建读取excel文件,根据excel文件名创建数据库表名,将读取的excel 数据保存到数据库对应的表中,读取数据库中存入的数据,执行主函数,并生成词云图等python代码的讲解。

5.对数据库的应用以及我自己的个人心得

三,准备阶段

 1.申请TDSQL-C数据库(第一种方式)

   1.1 进行注册登录

第一步点击进入

TDSQL-C MySQL 版_云原生关系型数据库_企业级云原生数据库-腾讯云 (tencent.com)https://cloud.tencent.com/product/cynosdb

                                                                    接下来

【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第1张图片

                         点击注册后自行选择自己的方式进行注册并登录 

1.2点击红圈进行选购

【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第2张图片

 1.3选购页面的配置

我的配置如下:

【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第3张图片

 【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第4张图片

 按照图片中的信息选择即可

1.4基础信息填写

这里我们需要的操作有三个,一个是输入自己的密码,第二个是选择表名大小写不敏感,最后一个就是勾选同意协议【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第5张图片

配置完后我们点击右下角的立即购买,会弹出一个窗口,我们继续点击红圈【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第6张图片

                                 购买完后会出现弹出,我们点击前往管理界面

【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第7张图片

进入管理页面后,往下划,找到读写实例点击开启外部【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第8张图片

创建并授权【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第9张图片

ok,配置到这里就全部结束了

2.申请TDSQL-C数据库(第二种方式成为测试者)

2.1如何成为测试者

      成为测试者,说是白嫖,可以直接进行测试,也不用进行上述的操作,就可以开始使用了,不如说是一种互利共赢把,相信在产品测评阶段,公司需要我们测试者对其产品的测试并给出宝贵意见,很感谢有这次活动能给我一个学习机会

【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第10张图片

下面是参加本次活动的链接:

CSDNhttps://marketing.csdn.net/p/0b7f2a95bede3da9f4f9c20813988e69

【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第11张图片

 点击立即报名后,会进行填写表单,这里学生也可以报名,公司那栏填个无。

【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第12张图片

         填写完成后会出现一个二维码,因为平台不让显示二维码,我就不放出来了。 

进入群里后,发这句话      @Lear  测试TDSQL-C的数据库配置   

她回复后,然后添加Lear,私聊就会发给你配置好的测试数据库信息【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第13张图片

这个我就不放出来了,我还要用。具体怎么使用在后面会提到 

2.2成为测试者的福利

福利1:

【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第14张图片

福利2: 

【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第15张图片

                     可以进行配套进行系统学习和对数据库进行使用,也可以提高自己。 

                                                          这里把链接给大家

腾讯云开发者社区-腾讯云腾讯云开发者社区是腾讯云官方开发者社区,致力于打造开发者的技术分享型社区。提供专栏,问答,沙龙等产品和服务,汇聚海量精品云计算使用和开发经验,致力于帮助开发者快速成长与发展,营造开放的云计算技术生态圈。https://cloud.tencent.com/developer/learning/camp/6

                      其实福利什么的并不重要,重要的是给了小白一个学习的机会。

2.3测评方向

这里不是我不放出来,是我不清楚会不会违规,这个在进入群后,群公告会有。【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第16张图片

四,进行数据准备

实现词云图所需数据如下:

1.词频

2.要展示词云形状的背景图

3.词云所使用的字体文件

下载地址:

词频

https://tdsql-c-1253910586.cos.ap-nanjing.myqcloud.com/%E8%AF%8D%E9%A2%91.ziphttps://tdsql-c-1253910586.cos.ap-nanjing.myqcloud.com/%E8%AF%8D%E9%A2%91.zip背景图

https://tdsql-c-1253910586.cos.ap-nanjing.myqcloud.com/background.PNG.ziphttps://tdsql-c-1253910586.cos.ap-nanjing.myqcloud.com/background.PNG.zip字体

https://tdsql-c-1253910586.cos.ap-nanjing.myqcloud.com/PingFangBold.ttfhttps://tdsql-c-1253910586.cos.ap-nanjing.myqcloud.com/PingFangBold.ttf

五,使用PyCharm创建项目工程

这里按照图中创建好项目和文件夹,将下载的内容放入对应的文件夹

【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第17张图片

对文件夹的作用进行解读:

  1. 词云图文件夹可以用来做为生成图片的存储路径
  2. 词频是数据词云图数据的来源
  3. 字体文件则是词云图的中以什么字体展现
  4. background.png 作为词云图背景图
  5. sever.py 为代码部分

六,连接TDSQL-C数据库

找到读写实例

【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第18张图片

【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第19张图片

 对应将信息填入即可,成为测试者的人员,可以直接将发给你的配置信息填写进去就ok了。

当然数据库只填写发给你的其中一个就行。

七,创建数据库

1.如图点击登录【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第20张图片

                                     2.点击 新建,然后点击新建库【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第21张图片

 3.点击新建数据库【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第22张图片

 4.定义自己的数据库名【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第23张图片

 5.出现自己定义的数据库名后【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第24张图片

ok,到这里,创建数据库就结束了 ,将创建的数据库名填写到连接配置的datebase部分

八,对制作词云图相关代码的讲解

接下来我将解的代码是按顺序进行的,最后只需要将其组合,即可成为完整的代码。

如果只是进行测试的话,只需要改动一小部分代码即可,我会用蓝色字在代码解读中标出来

(1).先导入库

【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第25张图片

 库的版本其中wordcloud库如果无法安装可以是使用最新版本

【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第26张图片

(2).MySql数据库连接配置

这里大家自行填入,代码如下:

# MySql数据库连接配置
db_config = {
    'host': "",  # 主机名
    'port': ,  # 端口
    'user': "",  # 账户
    'password': "",  # 密码
    'database': '',  # 这里需要创建自己的数据库创建的数据库名

(3)创建读取excel文件

代码如下:

# 创建读取excel文件的函数
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')

重要代码部分解读:

  1. path = '词频/词频':设置文件夹路径,假设 Excel 文件都存储在名为"词频"的文件夹中。(注意这段代码只需要将这部分改为你的存放词频的文件夹路径

  2. files = [path + "/" + i for i in os.listdir(path)]:使用os.listdir()获取文件夹中的所有文件名,并通过列表推导式构建完整的文件路径列表。

  3. for file_path in files::对每个文件进行迭代。

  4. print(file_path):打印当前文件的完整路径。

  5. filename = os.path.basename(file_path):使用os.path.basename()获取文件名(包括扩展名)。

  6. table_name = os.path.splitext(filename)[0]:使用os.path.splitext()获取文件的扩展名,并通过索引取得文件名,去除文件扩展名,作为表名。

  7. data = pd.read_excel(file_path, engine="openpyxl", header=0):使用 pandas 库的read_excel()方法读取 Excel 文件,指定引擎为"openpyxl",header参数指定第一行为列名。

  8. columns = {col: "VARCHAR(255)" for col in data.columns}:根据数据的列名动态生成一个字典columns,其中键为列名,值为"VARCHAR(255)",表示列的数据类型为字符串。

  9. create_table(table_name, columns):调用一个名为create_table()的函数,用于创建一个表,传递表名和列名数据作为参数。

  10. save_to_mysql(data, table_name):调用一个名为save_to_mysql()的函数,用于将数据保存到 MySQL 数据库中,传递数据和表名作为参数。

  11. print(filename + ' uploaded and saved to MySQL successfully'):打印上传并成功保存到 MySQL 数据库的文件名。

(4)根据excel文件名创建数据库表名

代码入下:

# 根据excel文件名创建数据库表名
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()

重要代码部分解读:

  1. 建立MySQL数据库连接,通过pymysql库的connect()方法和**db_config参数来连接数据库。

  2. 创建一个游标对象cursor,用于执行 SQL 语句。

  3. 组装创建表的 SQL 查询语句。使用f-string将表名和列名与数据类型拼接成一个字符串。表名由参数table_name提供,列名和数据类型由columns字典提供。

  4. 循环遍历columns字典的键值对,将列名和数据类型拼接到查询语句中。

  5. 使用rstrip(", ")方法去除查询语句中最后一个逗号和空格。

  6. 将拼接完成的查询语句赋值给变量query

  7. 执行创建表的操作,使用cursor.execute(query)方法执行查询语句。

  8. 提交事务,使用conn.commit()方法确保查询的结果被提交到数据库。

  9. 关闭游标和数据库连接,使用cursor.close()conn.close()方法。

(5)将读取的excel数据保存到数据库对应的表中

代码入下:

# 将读取的excel 数据保存到数据库对应的表中
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()

重要代码部分解读:

  1. 建立 MySQL 数据库连接,通过 pymysql 库的 connect() 方法和 **db_config 参数来连接数据库。

  2. 创建一个游标对象 cursor,用于执行 SQL 语句。

  3. 使用 iterrows() 方法循环遍历数据框架 data 中的每一行数据。

  4. 组装插入数据的 SQL 查询语句。使用 f-string 将表名和列名拼接到查询语句中。

  5. 循环遍历数据框架的列名,将列名拼接到查询语句中。

  6. 使用 rstrip(", ") 方法去除查询语句中最后一个逗号和空格。

  7. 将拼接完成的查询语句赋值给变量 query

  8. 使用 tuple(row) 将当前行的数据转换为元组 values

  9. 使用 ("%s, " * len(values)).rstrip(", ") 动态生成值的占位符,并将占位符拼接到查询语句中。

  10. 使用 cursor.execute(query, values) 方法执行查询语句,并传递元组 values 作为参数。

  11. 提交事务,使用 conn.commit() 方法确保查询的结果被提交到数据库。

  12. 关闭游标和数据库连接,使用 cursor.close() 和 conn.close() 方法。

(6)读取数据库中存入的数据

代码入下:

# 读取数据库中存入的数据
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

重要代码部分解读:

  1. 建立 MySQL 数据库连接,通过 pymysql 库的 connect() 方法和 **db_config 参数来连接数据库。

  2. 创建一个游标对象 cursor,用于执行 SQL 语句。

  3. 执行查询所有表名的 SQL 语句,使用 cursor.execute("SHOW TABLES")

  4. 使用 cursor.fetchall() 获取所有表名的结果,并将其赋值给 tables 变量。

  5. 定义空列表 data,用于存储查询结果。

  6. 定义空列表 dic_list 和 table_name_list,用于存储每个表的数据字典和表名。

  7. 使用循环遍历 tables 列表的每个元素,获取表名。

  8. 构建查询表中所有数据的 SQL 语句,使用 f-string 将表名拼接到查询语句中。

  9. 使用 cursor.execute(query) 执行查询语句。

  10. 使用 cursor.fetchall() 获取查询结果。

  11. 判断结果是否为空,如果不为空,则获取查询结果的列名,将结果转换为字典的形式,并将结果添加到 data 列表中。

  12. 构建一个字典 dic,将 data 列表中的数据以字典形式存储,键为 ‘word’ 列的值,值为 ‘count’ 列的值。将该字典添加到 dic_list 列表中。

  13. 将表名添加到 table_name_list 列表中。

  14. 提交事务,使用 conn.commit() 方法确保查询的结果被提交到数据库。

  15. 关闭游标和数据库连接,使用 cursor.close()  conn.close() 方法。

  16. 返回 dic_list  table_name_list 列表作为函数的输出。

(7)执行主函数,并生成词云图

代码如下:

# 执行主函数,并生成词云图
if __name__ == '__main__':
    # excelTomysql()方法将excel写入到mysql
    excelTomysql()
    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()  # 显示图像

重要代码部分解读:

  1. 检查当前代码是否在主函数中运行,使用 if __name__ == '__main__':

  2. 调用函数 excelTomysql(),将 Excel 数据写入到 MySQL 数据库中。

  3. 打印成功提示信息:“excel写入到mysql成功!”

  4. 调用函数 query_data(),从 MySQL 数据库中查询数据,并将结果存储在 result_list 和 table_name_list 变量中。

  5. 打印成功提示信息:“从mysql获取数据成功!”

  6. 使用循环遍历每个表的数据。

  7. 使用 np.array(Image.open('background.PNG')) 打开并读取词频背景图,将其转换为 maskImage 数组。

  8. 创建一个 wordcloud.WordCloud() 对象 wc,设置字体、背景图、最大词数和最大字号等参数。

  9. 使用 wc.generate_from_frequencies(result_list[i]) 从字典生成词云图。

  10. 使用 wc.to_file() 将生成的词云图保存到指定文件夹,文件名为表名加上 “.png” 后缀。

  11. 打印成功提示信息:“生成的词云图【表名.png】已经保存成功!”

  12. 使用 plt.imshow() 显示词云图。

  13. 使用 plt.axis('off') 关闭坐标轴的显示。

  14. 使用 plt.show() 显示图像。

(8)完整代码

代码如下:

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': "",  # 主机名
    'port': ,  # 端口
    'user': "root",  # 账户
    'password': "",  # 密码
    'database': '',  # 这里需要创建自己的数据库创建的数据库名

}


# 创建读取excel文件的函数
def excelTomysql():
    path = 'xxxx'  # 文件所在文件夹
    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')


# 根据excel文件名创建数据库表名
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()


# 将读取的excel 数据保存到数据库对应的表中
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_list


# 执行主函数,并生成词云图
if __name__ == '__main__':
    # excelTomysql()方法将excel写入到mysql
    excelTomysql()
    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()  # 显示图像

九,词云效果显示

1.运行代码后的效果展示【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第27张图片

 【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第28张图片

 2.数据库的表展示【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第29张图片

十,销毁数据库

        如果仅仅像我一样仅供测试使用,在使用完后销毁数据库,避免像我一样欠费了,还被打了电话,虽然不多,不过也提醒了我,要注意使用。

【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第30张图片

 【腾讯云TDSQL-C Serverless产品体验】使用 Python 向 TDSQL-C-添加读取数据-实现词云图_第31张图片

 最后记得点击确定。

十一,总结

        总的来说这次产品体验还是不错的,因为不仅解决了我当下的学习相关的一些问题,对于我来说就是操作起来没有很多繁琐的东西,虽然我是经过测试直接使用了给的数据库配置,然后我又通过文档自行配置和使用了,发现很容易上手和配置,并且给出的词语图示例代码,对于我一个小白来说都可以读懂并使用,是面向大众使用的一种便于操作和使用的云数据库,当然在开启外网操作时有点慢,我不清楚是什么原因。

        当然我也从将Excel数据导入到数据库, 数据库中查询和插入数据,过Web应用程序来展示数据,和展示数据库中的数据这四个方式对这个产品进行测评,下面是我测评后获取到的一些信息,因为篇幅过长我就不进行展示了。

TDSQL-C Serverless的优点:

  1. TDSQL-C Serverless采用无服务器的架构,可以根据实际需求自动调整计算资源,有效降低了成本和管理复杂性。这点我觉得最好的对于我来说。
  2. TDSQL-C Serverless会实时自动调整计算资源,无需手动操作,大大简化了数据库管理的工作。这点对于我这个不会管理数据库的小白很适合。

TDSQL-C Serverless的缺点:

  1. 我偶尔会遇到一些延迟波动的情况,特别是在负载突增时。虽然这种情况发生的不频繁,但仍希望在后续版本中能够得到改进。
  2. TDSQL-C Serverless在一些功能和性能方面有一些限制,最大连接数、并发查询数等。

我对TDSQL-C Serverless的建议方向如下:

  1. 提高自动伸缩的精确度和响应速度,减少延迟波动情况的发生。
  2. 允许用户根据自己的需求进行更细粒度的配置,自定义最大连接数、缓存大小等。

   我对TDSQL-C Serverless的体验感非常好,它在节约成本、简化运维等方面具有很大的优势。但希望能对于不足之处进行改进,以满足个人和小型应用的不同需求。

你可能感兴趣的:(云数据库体验,文本挖掘和自然语言处理,serverless,云原生,python,腾讯云,团队开发,mysql,数据库)