Я пытаюсь создать локальную базу данных моего письма с помощью Python. Я использую Imaplib для чтения электронной почты с сервера Imap. Моя цель - нажать извлеченные электронные письма в локальную базу данных MySql в формате «SUBJECT», «SENDER», «RECEIVER».Нажатие результатов Imaplib на базу данных Mysql, приводящую к «TypeError»
Я создал код, который создает локальную базу данных, читает электронные письма (с определенным сообщением). Я не уверен, как создать код, который подталкивает результаты к моей базе данных «EMAIL».
EDIT: Мне удалось решить мою предыдущую проблему разбора писем и добавления ее в базу данных. Теперь я застрял с ошибкой преобразования типа для Mysql. Вот мой новый сценарий:
def parse_email(raw_email):
email_complete = email.message_from_string(raw_email)
email_to = email_complete["To"]
email_from = email_complete["From"]
email_header = email_complete.items()
email_msg = get_first_text_block(email_complete)
con = MySQLdb.connect(host="127.0.0.1", # your host, usually localhost
user="admin", # your username
passwd="pwd", # your password
db="sec_crawl") # name of the data base
con.cursor().execute("INSERT INTO email VALUES (?,?,?,?)",
(buffer(str(email_to)),buffer(str(email_from)),buffer(str(email_header)),buffer(str(email_msg))))
con.commit()
На выполнение этого сценария, я получаю следующее сообщение об ошибке:
TypeError: not all arguments converted during string formatting
Вот часть сценария, который создает базу данных:
cur.execute("DROP TABLE IF EXISTS EMAIL")
cur.execute("CREATE TABLE email(email_to TEXT,email_from TEXT,email_header TEXT, email_msg TEXT)")
con.close()
Я не уверен в ошибке. Я сделал поиск некоторые предыдущие вопросы
Python MySQLdb TypeError: not all arguments converted during string formatting
Но проблема все еще существует. Я использую Python 2.7 на Windows 8.
Perfect. Это сработало. Я запутался с объявлением в SQLite. –