BLOG
Enjoy when you can, and endure when you must.
DEC 14, 2012/Django
修改数据库但在django中获取无效的解决办法

在django中,我想使用一个线程去定期查询MySQL中的表、获得最新的数据并做一些处理,但却遇到一个麻烦事,初次运行能成功,而之后就再也获取不到最新的数据,即使在表中已经执行了插入。

开始一直以为是objects.filter缓存的问题,纠结了半天无济于事,于是又从各方收集资料,折腾了一番终于发现这其实是MySQL默认的事务模式所引起的。

解决方案如下:

    
@transaction.commit_manually
def flush_transaction():
    transaction.commit()

在每次需要获取最新数据的时候,使用@transaction.commit_manually装饰器并调用transaction.commit()。

不用装饰器的话也可以这样:

    
transaction.enter_transaction_management()
transaction.commit()
COMMENTS
LEAVE COMMNT