2013-04-16 63 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