Python在重启后显示记录的旧值

时间:2015-08-13 07:03:11

标签: python mysql mysql-python cherrypy updating

我有一个脚本来显示使用MySQLdb和cherrypy作为表的数据库记录。我的问题是,当我从脚本外部更新值时,它会更新旧值,我需要重新启动它以显示新值。

我在mod / db.py中的数据库类:

import MySQLdb as mdb


class DB:
    con = None

    def __init__(self):
        if DB.con is None:
            DB.connect()

    @staticmethod
    def connect():
        DB.con = mdb.connect('myhost', 'myuser', 'mypass', 'mydb')

    @staticmethod
    def _query(q, values, commit):
        cur = DB.con.cursor(mdb.cursors.DictCursor)
        cur.execute(q, values)
        if commit:
            DB.con.commit()
            return cur.rowcount
        rows = cur.fetchall()
        return rows

    @staticmethod
    def query(q, values, commit=False):
        try:
            return DB._query(q, values, commit)
        except mdb.OperationalError:
            DB.connect()
            return DB._query(q, values, commit)

这就是我使用它的方式:

from mod import db
def get_data(username):
    data = []
    for elm in db.DB.query("select name, value from data user=%s", (username,)):
        data.append(elm)
    return data

get_data工作正常但脚本运行时我使用mysql

更改记录
mysql> update data set value=(rand() * 21);
Query OK, 51 rows affected (0.23 sec)
Rows matched: 51  Changed: 51  Warnings: 0

然后调用get_data它返回旧值。

0 个答案:

没有答案