小编bas*_*ann的帖子

使用python 3在电子邮件中嵌入Pandas df html表

我试图嵌入并发送创建的html表pandas .to_html.

我很高兴将df直接发送到电子邮件或文件.

到目前为止,我可以使用以下内容嵌入图像:

fp = open(attachment, 'rb')                                                    
img = MIMEImage(fp.read())
fp.close()
img.add_header('Content-ID', '<{}>'.format(attachment))
msg.attach(img)
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这个附加df但不是因为某些原因嵌入的内容.

fp = open(att1, 'r')                                                    
img = MIMEText(fp.read(),'html')
fp.close()
img.add_header('Content-ID', '<att1>')
msg.attach(img)
Run Code Online (Sandbox Code Playgroud)

或者,我可以将df数据发送到电子邮件,但是作为无格式文本发送,似乎无法使用带有简单边框的格式化(即)表格来解决这种方法.

df = dFrame(q2) 
tbl = '{df}'
tbl = df.to_html(index=False,justify='center')
msgText = MIMEText('<b>%s</b><br><html src="cid:%s"><br>' % (body, tbl), 'html')
msg.attach(msgText)
Run Code Online (Sandbox Code Playgroud)

嵌入式图像的更完整代码,我希望为嵌入html表调整.

def sndFile1():
    import smtplib
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from email.mime.image import MIMEImage

    att1 = path + 'df.html'
    att2 = path + 'Indices.png'
    att3 = path + 'Segments.png' …
Run Code Online (Sandbox Code Playgroud)

python embed html-table html-email

8
推荐指数
1
解决办法
660
查看次数

使用dictreader时重命名标头

我正在寻找使用dictreader/dictwriter重命名标头的最佳方法,以添加到我已经完成的其他步骤.

这就是我想对下面的Source数据示例所做的.

  1. 删除前两行
  2. 将列(标题和数据)重新排序为与源文件相比的2,1,3
  3. 将标题重命名为ASXCode,CompanyName,GISC

当我在

如果我使用'reader = csv.reader.inf',则删除第一行并重新排序列但是按预期没有标题重命名

或者,当我运行dictreader行'reader = csv.DictReader(inf,fieldnames =('ASXCode','CompanyName','GICS'))''我收到错误'dict包含不在fieldnames中的字段:'并显示第一个数据行而不是标题.

我有点困惑于如何解决这个问题,所以任何提示都会受到赞赏.

源数据示例

ASX listed companies as at Mon May 16 17:01:04 EST 2016     

Company name    ASX code    GICS industry group
1-PAGE LIMITED  1PG Software & Services
1300 SMILES LIMITED ONT Health Care Equipment & Services
1ST AVAILABLE LTD   1ST Health Care Equipment & Services
Run Code Online (Sandbox Code Playgroud)

我的守则

import csv
import urllib.request
from itertools import islice

local_filename = "C:\\myfile.csv"
url = ('http://mysite/afile.csv')

temp_filename, headers = urllib.request.urlretrieve(url)

with open(temp_filename, 'r', newline='') …
Run Code Online (Sandbox Code Playgroud)

python csv header

5
推荐指数
1
解决办法
1198
查看次数

为什么PyMySQL删除查询执行但不删除记录没有错误?

问题:

我正在尝试使用pymysql通过我的函数运行删除查询,delEODTmp但它没有做任何事情(即删除记录)。它也不会返回任何错误,因此很难理解它为什么不起作用。

故障排除:

1) 函数 retSQL 就像一个魅力,检索我扔给它的任何 Select 字符串。这确认我的用户登录设置正确输入到pymysql.connect. 我正在从客户端到Mysql 5.7 server同一网络上的客户端执行此操作。

2)在使用相同凭据连接到同一服务器的同一客户端上,我可以:

  • 运行SQL DELETE FROM t_EOD_tmp;成功从workbench
  • 运行SQL DELETE FROM t_EOD_tmp;成功从phpMyAdmin

3)我尝试在服务器上本地运行py脚本,但删除查询仍然不起作用。与客户端相同的结果。

问题:

从 PyMySQL 执行时,破坏性查询似乎被阻止。我需要从 Python 和 MySQL 启用某些东西吗?

似乎没有关于 PyMySQL 的大量文档,所以也许通过不同的 MySQL Python 库进行开发会更好。有没有更好的办法?

代码:

import pymysql
import pandas

    query1 = '''SELECT * FROM t_EOD limit 1000;'''

    def retSQL(query):
    conn = pymysql.connect(host=myServer, port=myPort, user=myUsr, password=myPwd, db=myDB)
    df = pd.read_sql(query,conn)
    print(df.head(5)) 
    conn.close() # …
Run Code Online (Sandbox Code Playgroud)

python mysql phpmyadmin mysql-workbench

0
推荐指数
2
解决办法
2484
查看次数