我正在尝试创建一条路线,跟踪产品的所有历史记录。我为product
创建了一个模型,为producthistory
创建了一个类似的模型。现在,无论何时创建对象,我都希望它保存在product
表和producthistory
表中。两个表中唯一的区别是id字段。producttable
包含产品的id&;producthistorytable
具有historytable
的id字段以及产品的id。我想用产品的id进行筛选,以便进一步使用数据。如何在producthistory表中插入product对象以及在该时间点创建的产品的id
以下是模型:
class Product(Base):
__tablename__ = "product"
id = Column(Integer, primary_key=True, index=True)
product_url= Column(String)
current_price= Column(Integer)
updated_at= Column(String)
created_at= Column(String)
target_price= Column(Integer)
product_name= Column(String)
class ProductHistory(Base):
__tablename__ = "producthistory"
id = Column(Integer, primary_key=True, index=True)
product_id = Column(Integer)
product_url= Column(String)
current_price= Column(Integer)
updated_at= Column(String)
created_at= Column(String)
target_price= Column(Integer)
product_name= Column(String)
以下是创建产品的逻辑:
@app.post('/createproducts/')
def createproducts(request: Product, db:Session = Depends(get_db)):
product = models.Product(
product_url= request.product_url,
current_price= request.current_price,
updated_at= request.updated_at,
created_at= request.created_at,
target_price= request.target_price,
product_name= request.product_name
)
db.add(product)
db.commit()
db.refresh(product)
return product
您可以尝试
events
,它基本上是钩子,在DB的某些操作之后执行。据我所知,您需要一个after_insert
钩子:https://docs.sqlalchemy.org/en/13/orm/events.html#sqlalchemy.orm.events.MapperEvents.after_insert在您的情况下,它将是:
相关问题 更多 >
编程相关推荐