簡體   English   中英

我如何發送帶有 python pandas 的 emsil csv 附件而不使用 to_csv 文件導出到 Z628CB5675FF524F3E719B7AA2E

[英]how do i send emsil csv attachment with python pandas without exporting to csv file ithut using to_csv

我通過從 mysql 表中讀取以下腳本來導出到 csv 文件。 但我需要這個 csv 附件不保存到本地。 而是將其附加在 email 中並發送

任何想法?

import pandas as pd
import pymysql
from sqlalchemy import create_engine
from urllib.parse import quote
import smtplib


username = "root"
password = "xxxxxx"
port = 3306
database = "DB"


engine = create_engine('mysql+pymysql://root:%s@hostname:3306/DB' % quote('xxxxxx'))

sql_query = pd.read_sql(SELECT * FROM table, engine)

print(sql_query)
df = pd.DataFrame(sql_query)
df.to_csv (r'localpath/filename.csv', index = False)

任何想法?

您可以使用StringIO中的 StringIO,然后將實例傳遞給DataFrame.to_csv方法:

>>> from io import StringIO
>>> csv_file = StringIO()
>>> df.to_csv(csv_file)

要將 object 作為文件讀取,需要調用seek傳遞0來重置 cursor,然后讀取文件:

>>> csv.seek(0)
>>> pd.read_csv(csv_file)
   Unnamed: 0  Heading1 Heading2
0           0         1     0994
1           1         2     113G
2           2         3     113N
3           3         4     0978

我使用 StringIO:

from io import StringIO


def create_csv(df: pd.DataFrame) -> str:
    with StringIO() as buffer:
        df.to_csv(buffer, index=False)

        return buffer.getvalue()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM