我正在创建一个脚本,从数据库中获取一些数据,然后通过邮件发送。不幸的是,我被一些看起来很容易做的事情困住了。在
如果数据库中只有一个条目,那么它可以完美地工作(例如:18/10/18-做数学练习),但是如果有多个条目没有显示出来,我考虑使用while循环,但由于我必须将所有条目保持在同一个变量中,所以无法使其正常工作。我分享以下代码:
# Enviar correu Python 3.6 (NO ANOMENAR EMAIL.PY)
import smtplib, pymysql.cursors, secrets, re, datetime
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from time import strftime
def dbb():
connection = pymysql.connect(host='X',
user='root',
password='X',
db='deuresc',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
try:
with connection.cursor() as cursor:
# Llegim tots els recordatoris
dataactual = strftime('%Y-%m-%d')
data = datetime.datetime.strptime(dataactual, "%Y-%m-%d")
datafinal = data + datetime.timedelta(days=1)
sql = "SELECT * FROM `deures` WHERE `data`=%s"
cursor.execute(sql, datafinal)
resultat = cursor.fetchall()
for row in resultat:
data = str(row['data'])
print(data)
tasca = str(row['tasca'])
print(tasca)
# It prints all the values but it doesn't send them below.
fromaddr = "X"
PASSWORD = "X"
welcome = ['Jefe', 'Gery', 'Boss', 'Gary']
# Misstage del correu
SUBJECT = "Recordatori deures " + data
body = "Bon dia " + secrets.choice(welcome) + ',' + '\n' + 'Tens les següents tasques programades per demà: ' + '\n' + data + ' ' + tasca
toaddr = "X"
try:
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = SUBJECT
msg.attach(MIMEText(body, 'plain'))
# Detalles del servidor de correu (Gmail, SMTP, Port: 587, TLS)
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(fromaddr, PASSWORD)
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()
print("S'ha enviat el recordatori a '" + toaddr + "' satisfactoriament!")
except:
print("S'ha produït un error!")
finally:
connection.close()
提前感谢您的帮助
您将在结果上循环,并在循环中分配值}。当循环完成时,这两个变量将只包含最后一个分别打印的值。在
data
和{检查:
如果要打印所有值,必须将它们存储在某个地方。在
你可能想要
^{pr2}$。。。然后在代码里
如果希望值在电子邮件中并排打印,则收集循环可能应该类似于
然后在}收集的值的方式。在
body
赋值中从data_tasca
收集行,类似于上面从datas
和{另外,您可能应该将不使用
cursor
的代码移到with
子句之外,即在cursor.fetchall()
之后升级代码。在相关问题 更多 >
编程相关推荐