[英]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.