首页 > 解决方案 > 如何从sql结果打印结果?

问题描述

我在 mysql 中使用 Select 查询,我想使用 python 获取记录。
client_start 是 SELECT 查询

  client_start = con.execute("SELECT DISTINCT `clients_agreements`.`date_start` , `buildings`.`id` , `buildings`.`street` , `buildings`.`street_nr` , `clients`.`building_id` , `clients_agreements`.`user_id` FROM `clients_agreements` LEFT JOIN `buildings` On `clients_agreements`.`user_id` = `buildings`.`id` LEFT JOIN `clients` ON `clients`.`building_id` = `buildings`.`id` WHERE `date_start` = (CURRENT_DATE)") #SELECT ID CLIENT QUERY
for row in client_start:
    streets = row[2]
    house_nr = row[3]
    message = str(streets) + " / " + str(house_nr)
 msg = 'Subject: {0}\n\n{1}'.format(subject,message).encode('utf-8').strip()

当我在循环中使用打印时,我得到两个结果(什么是好的),但是当我在循环后使用打印时,我只得到一个结果。循环后如何打印所有结果?我不能使用数组,因为我想通过电子邮件发送。我想发送所有记录

标签: python

解决方案


正如@roganjosh 所说,每次通过循环时,您都会丢弃message.

您可以通过两种方式解决此问题:

无论您在做什么message——打印、发送电子邮件、写入文件等——在循环中执行它同时你拥有当前值。

或者,如果您需要收集所有值然后一次性处理它们,请将它们保存在一个列表中:

messages = []
for row in client_start:
    streets = row[2]
    house_nr = row[3]
    message = str(streets) + " / " + str(house_nr)
    messages.append(message)
# now handle the list of messages

推荐阅读