我试图嵌入并发送创建的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) 我正在寻找使用dictreader/dictwriter重命名标头的最佳方法,以添加到我已经完成的其他步骤.
这就是我想对下面的Source数据示例所做的.
当我在
如果我使用'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) 问题:
我正在尝试使用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)