如何将API 中的excel 文件load 到 Azure blob 中

背景: 项目中一个API 中的excel 加密了,需要完成以下任务:

任务一: 将这个excel 文件从API 获取,解密后将数据load 进SQL SERVER 数据库

任务二:将这个excel 文件从API 获取后,解密后将数据excel 数据load 到 Azure blob 中存储起来

对于第一个任务,先不提供方案,今天就第二个任务提供如下方案:

python 复制代码
import os
from io import BytesIO
import pandas as pd
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient

# 假设`bytes_data`是您解密后从API获得的Excel数据的BytesIO对象
# bytes_data = ...

# 将BytesIO对象转化为DataFrame
with BytesIO() as bio:
    # 加载到Pandas DataFrame中
    bio.write(bytes_data.getvalue())
    bio.seek(0)  # 移动到文件的开头
    df = pd.read_excel(bio)

# 将DataFrame转换回Excel文件保存在BytesIO对象中
with BytesIO() as bio:
    # 将DataFrame保存到Excel文件格式的BytesIO对象中
    with pd.ExcelWriter(bio, engine='openpyxl') as writer:
        df.to_excel(writer)
    
    # 准备将Excel文件上传到Azure Blob Storage
    bio.seek(0)
    excel_data = bio.read()

    # 初始化Azure Blob Service Client
    # 假设你已经有了AZURE_STORAGE_CONNECTION_STRING
    connection_str = os.getenv('AZURE_STORAGE_CONNECTION_STRING')
    blob_service_client = BlobServiceClient.from_connection_string(connection_str)

    # 创建Blob客户端来上传文件
    # 需要Blob容器名称和文件路径在Blob中的名称
    container_name = 'your_container_name'
    blob_name = 'your_blob_name.xlsx'
    blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)

    # 上传BytesIO对象中的数据到Azure Blob
    blob_client.upload_blob(excel_data, blob_type="BlockBlob", overwrite=True)

    print(f'{blob_name} uploaded to {container_name}')

# 注意: 以上代码中的`your_container_name`和`your_blob_name.xlsx`要替换成你的Azure存储账户的实际容器名称和Blob名称。
# 另外,确保你有适当的权限和正确的连接字符串

Note: 在上传到Azure Blob之前,你需要确保你有一个有效的Azure存储账户,并创建了一个容器。同时,你需要将AZURE_STORAGE_CONNECTION_STRING设置为环境变量或以其他方式提供给你的脚本,这样才能认证你的身份并连接到Azure Blob Storage。

在这个过程中,自己走了很多弯路

弯路1,使用XlsxWriter ,走到这里,不知道该如何跟Blob 的 upload_bload 方法结合使用,

python 复制代码
import xlsxwriter

bio = io.BytesIO()

workbook = xlsxwriter.Workbook(bio)
worksheet = workbook.add_worksheet()

弯路2,upload_blob 的使用还是一知半解,不知如何变通,后续需要继续研究 upload_blob

blob 中的upload_blob 的官方文档:使用 Python 上传 blob - Azure Storage | Microsoft Learn

提到,将数据上传到块 Blob有如下路子:

1.通过本地文件路径上传块 Blob

2.通过流式传输上传块 Blob

3.将二进制数据上传到块 Blob

相关推荐
阿福不是狗1 小时前
Python使用总结之Mac安装docker并配置wechaty
python·macos·docker
gen_2 小时前
mac环境下的python、pycharm和pip安装使用
python·macos·pycharm
AI视觉网奇2 小时前
pycharm 左右箭头 最近编辑
ide·python·pycharm
思绪无限2 小时前
Pycharm的终端无法使用Anaconda命令行问题详细解决教程
ide·python·pycharm·终端·命令行·anaconda·问题教程
漫步云端-r2 小时前
Pycharm的使用技巧总结
ide·python·pycharm
风逸hhh3 小时前
python打卡day46@浙大疏锦行
开发语言·python
火兮明兮3 小时前
Python训练第四十三天
开发语言·python
互联网杂货铺5 小时前
完美搭建appium自动化环境
自动化测试·软件测试·python·测试工具·职场和发展·appium·测试用例
Gyoku Mint5 小时前
机器学习×第二卷:概念下篇——她不再只是模仿,而是开始决定怎么靠近你
人工智能·python·算法·机器学习·pandas·ai编程·matplotlib
沉到海底去吧Go5 小时前
【行驶证识别成表格】批量OCR行驶证识别与Excel自动化处理系统,行驶证扫描件和照片图片识别后保存为Excel表格,基于QT和华为ocr识别的实现教程
自动化·ocr·excel·行驶证识别·行驶证识别表格·批量行驶证读取表格