Python 如何实施";历史";对于数据库对象?
我目前正在Postgres上使用SQLAlchemy和Python 我感兴趣的是为模型实现一个“history”属性。这意味着每当修改数据库行时,该值的更改都会记录在某个地方 比如说, 我有一只狗模型。狗有两个属性:体重和主人 第1天:创建狗,Python 如何实施";历史";对于数据库对象?,python,sqlalchemy,Python,Sqlalchemy,我目前正在Postgres上使用SQLAlchemy和Python 我感兴趣的是为模型实现一个“history”属性。这意味着每当修改数据库行时,该值的更改都会记录在某个地方 比如说, 我有一只狗模型。狗有两个属性:体重和主人 第1天:创建狗,weight=5,owner=None 第二天:Dog.体重=4 第三天:Dog.owner=me 这将产生如下历史记录: [ [1, weight=5, owner=None], [2, weight=4, owner=None], [3,
weight=5,owner=None
第二天:Dog.体重=4
第三天:Dog.owner=me
这将产生如下历史记录:
[ [1, weight=5, owner=None],
[2, weight=4, owner=None],
[3, weight=4, owner=me] ]
实际上,我不认为Postgresql有这个功能来存储表的历史记录,虽然我没有使用Postgresql,但它类似于MySQL。你可以使用两个表来实现你的功能。下面是一个示例(只是一个使用MySQL语法的示例): 表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用于存储狗的历史记录
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`)
)
现在,您可能想知道如何存储数据。
当您想在数据库中保存新的狗数据时,请查询dog_now表以通过dog_id获得数据。并将数据放入dog_history表中,更新dog_now表中的新狗数据。因此每次dog添加新属性时,我也必须更新dog_history?@Sparrowcide Of cource,或者您可以使用Mongodb,您只需将其保存在db中。