为什么 flask sqlalchemy 模型查询没有得到最新的记录?
why flask sqlalchemy model query does not get newest records?
我有一个模型class:
class PlatformUsage(db.Model):
__tablename__ = 'platform_usage'
id = db.Column(db.BigInteger, primary_key=True)
module = db.Column(db.String(64))
rb = db.Column(db.BigInteger)
status = db.Column(db.String(64))
platform = db.Column(db.String(64))
def __init__(self, module, rb, status, platform):
self.module = module
self.rb = rb
self.status = status
self.platform = platform
def __repr__(self):
return "<PlatformUsage(module: %s, rb: %d, status: %s, platform: %s>" % (
self.module, self.rb, self.status, self.platform)
当我这样查询时:
while True:
PlatformUsage.query.filter_by(module='xxx')
我在外部更改数据库,我无法获取最新结果!为什么?
session.query(PlatformUsage).filter_by(xxxx)
会得到正确的结果!
Mikko Ohtamaa 链接到的问题不会立即回答您的问题,但包含您需要了解的内容才能理解。
在您第一次执行查询后,您就处于事务中。在事务中,大多数 DBMS 保证您可重复读取(或为您提供该选项)。 IE。每次您 运行 事务中的查询 您都会得到相同的答案 。这就是您执行第一个代码时发生的情况。
第二次,您可能在浏览器上按了 F5,然后您获得了一笔新交易。这为您提供了最新数据。
我有一个模型class:
class PlatformUsage(db.Model):
__tablename__ = 'platform_usage'
id = db.Column(db.BigInteger, primary_key=True)
module = db.Column(db.String(64))
rb = db.Column(db.BigInteger)
status = db.Column(db.String(64))
platform = db.Column(db.String(64))
def __init__(self, module, rb, status, platform):
self.module = module
self.rb = rb
self.status = status
self.platform = platform
def __repr__(self):
return "<PlatformUsage(module: %s, rb: %d, status: %s, platform: %s>" % (
self.module, self.rb, self.status, self.platform)
当我这样查询时:
while True:
PlatformUsage.query.filter_by(module='xxx')
我在外部更改数据库,我无法获取最新结果!为什么?
session.query(PlatformUsage).filter_by(xxxx)
会得到正确的结果!
Mikko Ohtamaa 链接到的问题不会立即回答您的问题,但包含您需要了解的内容才能理解。
在您第一次执行查询后,您就处于事务中。在事务中,大多数 DBMS 保证您可重复读取(或为您提供该选项)。 IE。每次您 运行 事务中的查询 您都会得到相同的答案 。这就是您执行第一个代码时发生的情况。
第二次,您可能在浏览器上按了 F5,然后您获得了一笔新交易。这为您提供了最新数据。