Я хочу получать данные из базы данных BigQuery с заданным интервалом и автоматически отправлять результаты по электронной почте с помощью smtplib.
У меня есть пример ниже. Я могу запросто получить данные из BigQuery. Я могу отправить электронную почту через smtplib просто отлично. Что мне нужно сделать, это объединить. Я хочу сохранить результаты цикла for в теле сообщения электронной почты. Я считаю, что делаю это, вызывая функцию. Однако когда я это делаю. Я получаю ошибку.
Файл "bqtest5.py", строка 52, в server.sendmail(имя_логина, получатели, query_named_params('corpus', 'min_word_count')) Файл "/usr/lib/python2.7/smtplib.py", строка 729, в sendmail esmtp_opts.append("size=%d" % len(msg)) TypeError: объект типа 'NoneType' не имеет len()
from google.cloud import bigquery
import smtplib
#Variables
login_email = 'MYEMAIL'
login_pwd = 'MYPASSWORD'
recipients ='EMAILSENDINGTO'
#Create a function
#specifies we are going to add two paramaters
def query_named_params(corpus, min_word_count):
#Create a Client
client = bigquery.Client()
#Define the query
query = """
SELECT word, word_count
FROM `bigquery-public-data.samples.shakespeare`
WHERE corpus = @corpus
AND word_count >= @min_word_count
ORDER BY word_count DESC;
"""
#Define the paramaters
query_params = [
bigquery.ScalarQueryParameter('corpus', 'STRING', 'sonnets'),
bigquery.ScalarQueryParameter(
'min_word_count', 'INT64', 10)
]
#Create job configuration
job_config = bigquery.QueryJobConfig()
#Add Query paramaters
job_config.query_parameters = query_params
#P
query_job = client.query(query, job_config=job_config)
# Print the results.
destination_table_ref = query_job.destination
table = client.get_table(destination_table_ref)
resulters = client.list_rows(table)
for row in resulters:
print("{} : {} views".format(row.word, row.word_count))
# --------------------EMAIL PORTION -------------#
#)smtplib connection print('messenger()')
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(login_email, login_pwd)
msg = """
"""
server.sendmail(login_email, recipients, query_named_params('corpus',
'min_word_count'))
server.quit()
if __name__ == '__main__':
query_named_params('corpus','min_word_count')
msg
наmessenger()
? - person match   schedule 28.01.2018