2016-11-15 7 views
0

私は最初のPythonスクリプトを使って電子メールをチェックし、いくつかのデータを解析してMicrosoft SQLデータベースに挿入しています。保存された変数tを挿入する方法に問題があります。Python 3.5 insert 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

t変数をSQL実行に提供する必要があります。これを行う1つの方法:

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

私はtを想定していますが、文字列になります。 sqlコマンドに指定すると、変数はタプルで囲まれます。これは、コマンドが引数をシーケンスと見なすためです。

+0

それは私がSQLエラーを取得しません。それは "?" –

+0

トレースバックとは何ですか?あるいは、 '?'の代わりに '%s'を指定することもできます。 – ODiogoSilva

関連する問題