小编Kag*_*ufu的帖子

使用检查来获取模型关系的历史记录

我能够使用 sqlalchemy 的检查功能来查找特定模型的任何正常值的历史记录。但是,当我尝试获取关系(或其相关的外键列)的历史记录时,它仅显示新值,而不显示以前的值。

有没有快速的方法来获取这样的关系的先前值,或者我是否需要使用另一个函数,或者完全推出自己的函数?

我使用的基本代码看起来像

class Person(db.Model):
  id = db.Column(db.Integer(), primary_key=True)
  name = db.Column(db.String(80))
  phone_id = db.Column(db.Integer(), db.ForeignKey("phone_number.id"))
  phone = db.relationship("PhoneNumber")
class PhoneNumber(db.Model):
  id = db.Column(db.Integer(), primary_key = True)
  type = db.Column(db.String(20))
  number = db.Column(db.String(11))

p = Person()
p.name = "Frank"
phone1 = PhoneNumber("Mobile", "1234567890") #__init__ function handles these args
phone2 = PhoneNumber("Home", "9876543210")
p.phone = phone1
db.session.add_all([p, phone1, phone2])
db.session.commit()
p.phone = phone2
history = db.inspect(p).attrs.get("phone").history
# history is sqlalchemy.orm.attributes.History(([<PhoneNumber('Home', '9876543210')>], (), ()))
# history.added is ([<PhoneNumber('Home', '9876543210')>])
# …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

4
推荐指数
1
解决办法
1583
查看次数

标签 统计

python ×1

sqlalchemy ×1