在当今科技快速发展的时代,数据处理和应用已经成为各行各业不可或缺的一部分。而在许多工作场景中,我们经常需要将Excel表格中的数据导入数据库,并以某种方式进行进一步处理和呈现。而随着云计算的普及,TDSQL Serveless作为一种新兴的数据库服务形式,为我们提供了更加灵活、高效的数据管理解决方案。
本文将重点探讨如何利用TDSQL Serveless进行数据库表格的批量导入与读取,并结合具体实例,展示如何快速生成名片卡。名片卡作为一种常见的商务工具,承载了信息交流和社交背景的重要功能。通过将Excel中的个人信息与数据库相结合,我们可以在不费力的情况下生成个性化的名片卡,从而提高工作效率和用户体验。
点击链接进行产品选购
注意:
算力配置中有一个只读组, 但是只读节点数量目前不支持自动弹性

基础信息 以及 高级配置可以根据自己的需求进行简单配置
最终配置效果图


安装我当前的配置点击立即购买, 会出现如下弹窗,我们可以看到预计的每小时扣费多少。

当实例创建成功后我们点击开启外部的读写地址, 方便我们进行SQL 的数据读取

接下来我使用的是Navicat Premium 进行的远程访问

在Navicat Premium 中新建数据库链接, 输入以下信息:
点击左下角的测试链接, 提示连接成功 后点击右下角的保存即可

到此我们的数据库的准备工作已经完成!!! 撒花
如图所示将我们准备好的excel 数据写入到数据库中

db_config = {
    'host': "xxxxx",  # 主机名
    'port': xxxx,  # 端口
    'user': "root",  # 账户
    'password': "xxx",  # 密码
    'database': 'myworkcard', # 数据库名称
}
 
def read_excel(excel_file):
    # 打开excel
    excel = openpyxl.load_workbook(excel_file)
    # 选择工作薄-选择第一个
    sheet = excel.worksheets[0]
    # 创建一个空列表
    data_list = []
    for row in sheet.iter_rows(min_row=1, values_only=True):
        data_list.append((row[1],row[2]))
        print(row[1], '----', row[2])
    print(data_list)
    #调用函数写入数据库
    return write_db(data_list)
 
打开Excel文件:
excel = openpyxl.load_workbook(excel_file)
使用openpyxl库的load_workbook()函数打开指定的Excel文件,将其赋值给变量excel。
选择工作薄:
sheet = excel.worksheets[0]
通过worksheets属性选择第一个工作薄,将其赋值给变量sheet。
创建空列表:
data_list = []
创建一个空列表data_list,用于存储从Excel中读取出的数据。
遍历Excel表格并读取数据:
for row in sheet.iter_rows(min_row=1, values_only=True):
    data_list.append((row[1], row[2]))
    print(row[1], '----', row[2])
 使用iter_rows()函数遍历工作薄中的每一行数据。min_row=1表示从第一行开始遍历。values_only=True表示只获取单元格的值,而不是包含格式等其他信息。然后将读取到的第2列和第3列数据添加到data_list列表中,并通过print()函数打印出来。
输出数据列表:
print(data_list)
打印输出完整的数据列表data_list,显示从Excel文件中读取出来的所有数据。
调用写入数据库的函数:
return write_db(data_list)
将读取到的数据列表data_list作为参数传递给名为write_db的函数,并返回函数调用的结果。
 
def write_db(data_list):
    # 创建一个数据库连接
    conn = pymysql.connect(**db_config)
    # 创建一个游标
    cursor = conn.cursor()
    # 执行创建表的操作, 如果表已经存在, 则不执行
    cursor.execute("create table if not exists cardlist(name varchar(20), work varchar(20))")
    #cursor.execute("create table cardlist(name varchar(20), work varchar(20))")
    # 提交事务
    conn.commit()
    # 关闭游标和数据库连接
    cursor.close()
    conn.close()
    # 调用函数写入数据库
    return write_db_data(data_list)
def write_db_data(data_list):
    # 创建一个数据库连接
    conn = pymysql.connect(**db_config)
    # 创建一个游标
    cursor = conn.cursor()
    # 执行写入操作
    for data in data_list:
        cursor.execute("insert into cardlist(name, work) values(%s, %s)", data)
    # 提交事务
    conn.commit()
    # 关闭游标和数据库连接
    cursor.close()
    conn.close()
    return data_list
 
函数write_db,用于将数据写入数据库:
函数write_db_data,用于执行数据的写入操作:
创建一个word 文件命名为template.docx 配置自己喜欢的模板, 参考如下:

#定义一个函数,用于读取数据库中的数据
def read_db():
    # 创建一个数据库连接
    conn = pymysql.connect(**db_config)
    # 创建一个游标
    cursor = conn.cursor()
    # 执行查询操作
    cursor.execute("select * from cardlist")
    # 获取查询结果
    result = cursor.fetchall()
    #循环遍历查询结果
    for row in result:
        print(row)
        # 打开模板
        doc = DocxTemplate('template.docx')
        # 设置内容对应关系
        context = {'name': row[0], 'work': row[1]}
        # 填充内容
        doc.render(context)
        na = row[0]
        # 保存新的文件
        doc.save(f'{na}.docx')
        # 友好提示
        print(f'{na}的word-生成完毕!!')
    # 关闭游标和数据库连接
    cursor.close()
    conn.close()
    return result
     
 
if __name__ == '__main__':
    data_list = read_excel('名单.xlsx')
    print(data_list)
    read_db()
 





import openpyxl
from docxtpl import DocxTemplate
import pymysql
# MySQL数据库连接配置
db_config = {
    'host': "xxxx",  # 主机名
    'port': xxx,  # 端口
    'user': "root",  # 账户
    'password': "xxxxx",  # 密码
    'database': 'myworkcard',
}
# 创建一个读取excel 文件的函数
def read_excel(excel_file):
    # 打开excel
    excel = openpyxl.load_workbook(excel_file)
    # 选择工作薄-选择第一个
    sheet = excel.worksheets[0]
    # 创建一个空列表
    data_list = []
    for row in sheet.iter_rows(min_row=1, values_only=True):
        data_list.append((row[1],row[2]))
        print(row[1], '----', row[2])
    print(data_list)
    #调用函数写入数据库
    return write_db(data_list)
# 创建一个函数, 将数据写入数据库
def write_db(data_list):
    # 创建一个数据库连接
    conn = pymysql.connect(**db_config)
    # 创建一个游标
    cursor = conn.cursor()
    # 执行创建表的操作, 如果表已经存在, 则不执行
    cursor.execute("create table if not exists cardlist(name varchar(20), work varchar(20))")
    #cursor.execute("create table cardlist(name varchar(20), work varchar(20))")
    # 提交事务
    conn.commit()
    # 关闭游标和数据库连接
    cursor.close()
    conn.close()
    # 调用函数写入数据库
    return write_db_data(data_list)
def write_db_data(data_list):
    # 创建一个数据库连接
    conn = pymysql.connect(**db_config)
    # 创建一个游标
    cursor = conn.cursor()
    # 执行写入操作
    for data in data_list:
        cursor.execute("insert into cardlist(name, work) values(%s, %s)", data)
    # 提交事务
    conn.commit()
    # 关闭游标和数据库连接
    cursor.close()
    conn.close()
    return data_list
#定义一个函数,用于读取数据库中的数据
def read_db():
    # 创建一个数据库连接
    conn = pymysql.connect(**db_config)
    # 创建一个游标
    cursor = conn.cursor()
    # 执行查询操作
    cursor.execute("select * from cardlist")
    # 获取查询结果
    result = cursor.fetchall()
    #循环遍历查询结果
    for row in result:
        print(row)
        # 打开模板
        doc = DocxTemplate('template.docx')
        # 设置内容对应关系
        context = {'name': row[0], 'work': row[1]}
        # 填充内容
        doc.render(context)
        na = row[0]
        # 保存新的文件
        doc.save(f'{na}.docx')
        # 友好提示
        print(f'{na}的word-生成完毕!!')
    # 关闭游标和数据库连接
    cursor.close()
    conn.close()
    return result
if __name__ == '__main__':
    data_list = read_excel('名单.xlsx')
    print(data_list)
    read_db()
 
本文介绍了使用TDSQL Serveless数据库添加Excel数据,并生成名片卡的流程。具体步骤包括:读取Excel文件中的数据,将数据插入到TDSQL Serveless数据库的表中,从数据库中读取数据并生成名片卡。在实现过程中需要使用pandas、pymysql等库。需要注意的是,在使用pymysql库建立连接时,需要将代码中的连接信息替换为实际的连接信息。此外,使用docxtpl库动态填充名片卡内容时,需要事先定义名片卡模板,并在代码中指定模板文件的路径。