我有一个脚本来显示使用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它返回旧值。