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

embedded/2024/11/14 3:06:11/

背景: 项目中一个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 Storagebio.seek(0)excel_data = bio.read()# 初始化Azure Blob Service Client# 假设你已经有了AZURE_STORAGE_CONNECTION_STRINGconnection_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 Blobblob_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 xlsxwriterbio = 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


http://www.ppmy.cn/embedded/27625.html

相关文章

设置UIProgressView的样式

UIProgressView是UIKit框架中的一个控件,用于显示任务的完成进度。你可以使用UIProgressView来展示任务的完成情况,例如下载文件、上传数据等。 要设置UIProgressView的样式,包括粗细、颜色等,你可以使用UIProgressView的一些属性…

Allegro orcad16.6 层叠,阻抗,差分,规则设置

PCB布局结束 再布线之用前要对pcb进行叠层处理和设计规则添加 添加4层 确定! 改下颜色 阻抗计算 嘉立创阻抗计算 (jlc.com) 输入到规则管理器 添加完对这个网络进行驱动 添加差分对 设置好之后回到规则设置 设置DIFF100 物理规则设置完 再添加一个间距规则 设置…

多线程常见使用

Thread.currentThread().interrupt(); Thread.currentThread().interrupt(); 是Java中用于中断当前线程的一个方法调用。这一行代码的作用是设置当前正在执行这段代码的线程的中断标志位为true。在Java中,中断是一种协作机制,用于通知线程应该停止它正在…

中兴F7607P自启动程序,关闭JAVA插件

中兴F7607P自启动程序,关闭JAVA插件 本文目的:关闭光猫内自动运行的JAVA插件,并实现开机自动调用用户的程序启动 原文地址 移动定制版F7607P不带LXC容器,取而代之的是JAVA虚拟机,内置多个插件,包括名为C…

Linux系统中搭建Mosquitto MQTT服务并实现远程访问本地消息代理进行通信

文章目录 1. Linux 搭建 Mosquitto2. Linux 安装Cpolar3. 创建MQTT服务公网连接地址4. 客户端远程连接MQTT服务5. 代码调用MQTT服务6. 固定连接TCP公网地址7. 固定地址连接测试 今天和大家分享一下如何在Linux系统中搭建Mosquitto MQTT协议消息服务端,并结合Cpolar内网穿透工具…

websocket集成文档

1.添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency>2.添加配置 Configuration public class WebSocketConfig {Beanpublic ServerEndpointExpo…

map和set

set就是key模型的搜索树 map就是key_value模型的搜索树 但是他们的底层不是搜索二叉树&#xff0c;是AVL树和红黑树&#xff01; map和set insert不会迭代器失效 erase会迭代器失效 文章目录 1.set1.1 set及使用1.2 multiset及使用 2.map2.1 map及使用2.2 multimap及使用 3.关于…

go语言数据类型转换

go语言数据类型转换 golang不会对数据进行隐式的类型转换&#xff0c;只能手动去执行转换操作&#xff0c;表达式T(v)将值v转换为类型T T : 就是数据类型 V : 就是需要转换的变量一、数值类型转换 数值间转换的时候建议从小范围转换成大范围&#xff0c;比如int8转int16&…