2013-10-14 43 views
1

我有下面的代码,我运行一次,然后再次插入一个新的值来刷新。Python脚本返回旧的MySQL值(直到重新启动)

def getStageAdditives(self, stage): 
     stagesAdditivesSelectQuery = """SELECT  a.id, 
                a.name, 
                IFNULL(sa.dose, 0) as dose, 
                IFNULL(sa.last_dose, 0) as last 
             FROM  additives a 
             LEFT JOIN stage_additives sa 
             ON   a.id = sa.additive_id 
             AND   sa.stage_id = (
             SELECT  id 
             FROM  stages 
             WHERE  name = '""" + stage + """') 
             ORDER BY a.name""" 

     self.cursor.execute(stagesAdditivesSelectQuery) 
     data = self.cursor.fetchall() 

     additives = [] 
     for additive in data: 
      id = additive[0] 
      name = additive[1] 
      dose = additive[2] 
      last = additive[3] 
      additives.append({ 'title': name, 'dose': dose, 'last': last }) 
     print stagesAdditivesSelectQuery 
     return additives 

的问题是,当我使用下面的代码中插入一个值“添加剂”表我老值(新值缺失)。

def createAdditive(self, name): 
     additiveInsertQuery = """ INSERT INTO additives 
            SET   name = '""" + name + """'""" 
     try: 
      self.cursor.execute(additiveInsertQuery) 
      self.db.commit() 
      return "True" 
     except: 
      self.db.rollback() 
      return "False" 

我可以通过查看phpMyAdmin来确认数值正在插入到数据库中。如果我重新启动脚本,我会按预期得到新值。如果我用phpMyAdmin运行查询也返回新值。刷新页面并等待10秒以上并没有帮助,我仍旧得到旧值。

如果它很重要,两种方法都在单独的类/文件中。在'createAdditive'方法成功返回后,使用ajax调用getStageAdditives。

DB初始化:

import MySQLdb 
import time 

class Stage: 
    def __init__(self): 
     self.db = MySQLdb.connect('192.168.0.100', 'user', 'pass', 'dbname') 
     self.cursor = self.db.cursor() 

检索类似的值获得新的值如预期(同一类createAdditives)的另一种方法:

def getAdditives(self, additive=None): 
     where = '' 
     if additive is not None: 
      where = "WHERE pa.additive_id = (" 
      where += "SELECT id FROM additives " 
      where += "WHERE name = '" + additive + "') " 
      where += "AND a.name = '" + additive + "'" 

     additiveSelectQuery = """ SELECT  a.name, 
               pa.pump_id 
            FROM  additives a, 
               pump_additives pa """ + where + """ 
            ORDER BY a.name""" 

     self.cursor.execute(additiveSelectQuery) 
     data = self.cursor.fetchall() 

     additives = [] 
     for item in data: 
      additives.append({'additive': item[0], 'pump': item[1]}) 
     return additives 
+0

你使用'MYSQLdb'吗?连接如何初始化? – alexis

+0

请参阅编辑数据库信息。 – DominicM

+0

你如何确认'createAdditive'方法的结果?换句话说,你在代码中检查这个方法的结果? –

回答