我正在嘗試使用Python創建我的電子郵件的本地數據庫。 我正在使用Imaplib從Imap服務器讀取電子郵件。我的目標是將提取的電子郵件以「SUBJECT」,「SENDER」,「RECEIVER」格式推送到本地MySql數據庫。將Imaplib的結果推送到導致「TypeError」的Mysql數據庫中
我已經構建了創建本地數據庫,讀取電子郵件(具體消息)的代碼。 我不確定如何製作將結果推送到我的數據庫「EMAIL」的代碼。
編輯:我已經設法解決了我以前解析郵件並將其添加到數據庫的問題。現在我被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
但問題仍然存在。 我在Windows 8上使用Python 2.7。
完美。這工作。我對SQLite中的聲明感到困惑。 – 2014-11-03 08:41:12