繁体   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