2013-04-16 100 views
0

以下是我用來嘗試將數據插入MySQL數據庫的一些代碼。使用Python將消息參數插入到MySQL數據庫中

break_down(s)是我用來解析消息參數的函數。這些參數將根據需要進行分析。

但是,當我嘗試插入這些值時,即使使用提交,它們也不會保存在MySQL數據庫中。爲什麼是這樣?

def break_down(s): 
    c=s.count('<') 
    if c==9: 
      res = re.findall('< (.*?) >', s) 
      for index in res: 
       print index,item 
    elif c==7 or c==3: 
      temp=parsing(s) 
      pprint(list(temp)) 
    else: 
     flag=0 
     c=s.count(':') 
     if c==8: 
      res=s.split(' : ') 
      res=[item.strip() for item in s.split(':')] 
      for index, item in enumerate(res): 
       print index, item 
      results = [float(x) for x in s.split(' ') if x.count('.') == 1] 
      pprint(results) 
      dbinsert(res[0],res[1],res[2],res[3],results[0],results[1],results[2],results[3],flag) 
     if c==7: 
      flag=1 
      res=s.split(' : ') 
      res=[item.strip() for item in s.split(':')] 
      for index, item in enumerate(res): 
       print index, item 
      results = [float(x) for x in s.split(' ') if x.count('.') == 1] 
      pprint(results) 
      dbinsert(res[0],res[1],res[2],res[3],results[0],results[1],results[2],results[3],flag) 


def parsing(s): 
     for t in s.split('<'): 
      for u in t.strip().split('>',1): 
       if u.strip(): yield u.strip() 


def dbinsert(a,b,c,d,e,f,g,h,flag): 
import MySQLdb 
db = MySQLdb.Connect(host="127.0.0.1", port=3306, user="root", passwd="root", db="ups") 
print "In dbinsert" 
cursor = db.cursor() 
try: 
    if flag==0: 
    sql = """INSERT INTO data(F1, 
      F2, F3, F4, F5, F6, F7, F8) 
      VALUES (a.value,b.value,c.value,d.value,e.value,f.value,g.value,h.value)""" 
    cursor.execute(sql) 
    db.commit() 
    elif flag==1: 
    sql = """INSERT INTO data(F1, 
      F2, F3, F4, F5, F6, F7, F8) 
      VALUES (a,b,c,,e,f,g,h)""" 
    cursor.execute(sql) 
    db.commit() 
except: 
    db.rollback() 
    db.close() 
+0

什麼是VALUES中的'a'(a.value,b.value,c.value,d.value,e.value,f.value,g.value,h.value)'? – Vyktor

回答

0

你不通過在查詢任何參數,執行查詢包含文字a.value, b.value, ...a, b, ...,這當然數據庫不知道什麼關係。

爲了使它工作,你需要的東西在的行:

sql = """INSERT INTO data(F1, F2, F3, ...) VALUES (%s, %s, %s, ...)""" 
cursor.execute(sql, (a, b, c, ...)) 

Thiss將正確逃生的價值觀和執行前將它們綁定到查詢。

+0

謝謝!那工作:) – Anon