user16628047
user16628047

Reputation:

python read from azure storage account

Having hard time in reading a .csv file that is stored in a storage container. I have these details for the container to access: "Blob SAS token" and "Blob SAS URL"

I have been referring to this, this but they don't use the "Blob SAS token" or "Blob SAS URL"

Can someone help with a python code that enables to read the data as a data frame?

Upvotes: 0

Views: 2001

Answers (1)

Anupam Chand
Anupam Chand

Reputation: 2662

If you look at the documentation HERE, it shows how to use a sas url to create a BlobClient. Once you have this, you can follow the instruction in the LINK you shared.

Your final code will look like this.

from azure.storage.blob import BlobClient
import pandas as pd
from io import StringIO

sas_url = "<your_blob_sas url>"
blob_client = BlobClient.from_blob_url(sas_url)
blob_data = blob_client.download_blob()
df = pd.read_csv(StringIO(blob_data.content_as_text()))
print(df)

To upload a dataframe to a container, you can try the following code

from azure.storage.blob import ContainerClient

sas_url = "https://<acct_name>.blob.core.windows.net/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
container = ContainerClient.from_container_url(sas_url)

output = io.StringIO()
head = ["col1" , "col2" , "col3"]
l = [[1 , 2 , 3],[4,5,6] , [8 , 7 , 9]]
df = pd.DataFrame (l , columns = head)
print(df)
output = df.to_csv (index_label="idx", encoding = "utf-8")

blob_client = container_client.upload_blob(name="myblob", data=output)

Upvotes: 1

Related Questions