gpt4 book ai didi

python - 如何返回一个串联的元组?

转载 作者:行者123 更新时间:2023-12-02 10:56:22 25 4
gpt4 key购买 nike

我正在研究一个python脚本,该脚本将从表中读取,然后向用户发送一条消息,包括查询返回的每一行的列信息,该脚本如下所示:

#!/usr/bin/python

import smtplib
import psycopg2


connection = psycopg2.connect(user="postgres",
password="postgres",
host="localhost",
port="5432",
database="myDB")
db_cursor = connection.cursor()


s = "SELECT error_message FROM temp.data_upload_errors"
db_cursor.execute(s)
try:
array_rows = db_cursor.fetchall()
except psycopg2.Error as e:
t_message = "Postgres Database error: " + e + "/n SQL: " + s
#return render_template("error.html", t_message = t_message)
db_cursor.close()


sender = 'email@provider.com'
receivers = ['email@provider.com']


for t_item in array_rows:
msg = "Error Message: " , t_item , "<br>"

try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, msg.as_string())
print "Successfully sent email"
except smtplib.SMTPException:
print "Error: unable to send email"
但是,我收到此错误:
AttributeError: 'tuple' object has no attribute 'as_string'
我想在 msg下返回整个内容,而不仅仅是 [0][1]数组项。
我是Python的新手,所以不确定可能出什么问题。

最佳答案

首先,请注意

msg = "Error Message: " , t_item , "<br>"
是相同的
msg = ("Error Message: " , t_item , "<be>")
因此您的 msg实际上是一个元组。
另一方面,您实际上每次在for循环中都将其覆盖
for t_item in array_rows:
msg = "Error Message: " , t_item , "<br>"
因此您的 msg将仅包含数组中的最后一项。
我认为您真正需要做的就是这样
msg = "<br>".join("Error Message: " + " ".join(t_item) for t_item in array_rows)
这里 " ".join(t_item)是一种将数组中的每个项目正确地从 tuple转换为 str的通用方法。考虑到您的SQL查询,您只从表中选择1列,因此每个 t_item实际上是一个1元素元组,因此您可以只使用 t_item[0]

关于python - 如何返回一个串联的元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62998151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com