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