Python 3.5.1 и fdb 1.5.1 - объект fdb.fbcore.Cursor по адресу 0x00175BB0
Я пытаюсь написать скрипт на Python, который:
подключиться к базе данных Firebird
выполнить выбор в подключенной базе данных
отправить по электронной почте для каждой записи результата из базы данных, повторно выбранной SELECT.
Я использую: Windows Vista x64 SP2, Python версии 3.5.1, Firebird Driver FDB 1.5.1.
После использования следующего скрипта я получаю сообщение электронной почты: объект fdb.fbcore.Cursor по адресу 0x00175BB0
Пожалуйста, предложения.
# -*- coding:utf-8 -*-
import smtplib
from email.mime.text import MIMEText
import fdb
con = fdb.connect(host='127.0.0.1', database='test', user='SYSDBA', password='masterkey', charset='WIN1250')
to = ['xxxxxx@xxxxxx']
cc = ['xxxxxx@xxxxxx']
bcc = ['xxxxxx@xxxxxx']
from_addr = 'xxxxxx@xxxxxx'
message_subject = "Say Hello"
cur = con.cursor()
select = cur.execute("select telephone from person")
#message_text = "%a" % (select)
message_text = (select)
message = "From: %s\r\n" % from_addr \
+ "To: %s\r\n" % ",".join(to) \
+ "CC: %s\r\n" % ",".join(cc) \
+ "BCC: %s\r\n" % ",".join(bcc) \
+ "Subject: %s\r\n" % message_subject \
+ str(message_text)
to_addrs = to + cc + bcc
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login('xxxxxx','xxxxxx')
#server.set_debuglevel(1)
#for message_text in cur.fetchall():
# print(message_text)
for message_text in cur.fetchall():
server.sendmail(from_addr, to_addrs, message)
server.quit()
con.close()
1 ответ
Вы печатаете объект курсора вместо того, чтобы извлечь значение из курсора. execute
метод возвращает сам курсор (так select
а также cur
это один и тот же объект).
Вместо этого вам нужно использовать:
cur = con.cursor()
cur.execute("select telephone from person")
message_text = cur.fetchone()