2016-11-15 59 views
0

我正在處理我的第一個Python腳本來檢查電子郵件,然後解析出一些數據,然後插入到Microsoft sql數據庫中。我在如何插入已保存的變量t時遇到問題。Python 3.5插入sql存儲變量

import imaplib 
import email 
import re 
import _mssql 


m = imaplib.IMAP4_SSL("imap.gmail.com", 993) 
m.login("username","password$") 
m.select('"Fire_Dispatch"') 

result, data = m.search(None, "ALL") # search all email and return uids 
if result == 'OK': 
    for num in data[0].split(): 
     result, data = m.fetch(num,"(BODY[TEXT])") 
     if result == 'OK': 
      email_message = email.message_from_string(data[0] [1].decode('utf-8')) # raw email text including headers 
p = str(email_message) 
a = re.search("ALLCFD(.*)",p) 

t = (a.groups(1)) 
print (t) 

conn = _mssql.connect(server='server', user='username', password='password', database='CFD_Calls') 

conn.execute_non_query("INSERT INTO calls (call_date_time,call)VALUES('3',t)") 

m.close() 
m.logout() 

回答

0

您需要在sql執行中提供t變量。一種方法:

conn.execute_non_query("INSERT INTO calls (call_date_time,call) VALUES('3',?)", (t,)) 

我假設t將是一個字符串。請注意,提供給sql命令時,該變量將封裝在一個元組中。這是因爲命令期望參數是一個序列。

+0

這不工作我得到一個SQL錯誤。它不喜歡「?」 –

+0

什麼是追溯?或者,它可以是'%s'而不是''' – ODiogoSilva