我目前正在Postgres上使用SQLAlchemy和Python
我有兴趣实施"历史"模型的属性。这意味着无论何时修改数据库行,都会在某处记录此值的更改。
例如,
我有一只模特狗。狗有两个属性:体重和主人。
第1天:创建了狗,weight=5, owner=None
第2天:Dog.weight=4
第3天:Dog.owner=me
这将导致历史记录:
[ [1, weight=5, owner=None],
[2, weight=4, owner=None],
[3, weight=4, owner=me] ]
答案 0 :(得分:0)
实际上,我不认为Postgresql有这个功能来存储表的历史,虽然我不使用Postgresql,但它与MySQL类似。你可以使用两个表来实现你的功能。这是一个例子(只是一个使用MySQL语法的例子):
Table 1:
CREATE TABLE `dog_now`(
`id` int(11) AUTO_INCREMENT ,
`dog_id` int(11) DEAFULT '0', -- dog id
`weight` float DEFAULT '0',
`owner` varchar(32) DEFAULT '',
PRIMARY KEY(`id`),
UNIQUE KEY `idx_dog_id`(`dog_id`)
)
表1用于存储狗的当前状态。
Table 2:
CREATE TABLE `dog_history`(
`id` int(11) AUTO_INCREMENT,
`dog_id` int(11) DEAFULT '0', -- dog id
`weight` float DEFAULT '0',
`owner` varchar(32) DEFAULT '',
PRIMARY KEY (`id`),
KEY `idx_dog_id`(`dog_id`)
)
表2用于存储狗的历史。
现在,您可能想知道如何存储数据。 如果要将新狗数据保存在数据库中,请查询dog_now表以通过dog_id实现数据。并将数据放入dog_history表,在dog_now表中更新新的狗数据。