[英]Field default timestamp set to table creation time instead of row creation time
[英]Creation timestamp of a row in SQLAlchemy
使用 SQLAlchemy ORM,有什么好的方法來記錄一個記錄的創建時間,而不會在后續更新時覆蓋創建時間?
這是一個示例表定義:
class Car:
model = Column(String, primary_key=True)
latest_model_year = Column(Integer)
created = Column(DateTime)
我想使用此代碼在數據庫中添加/更新 Car 行:
car = Car(
model = 'Accord',
latest_model_year = 2022,
)
session.merge(car)
...但這不會在插入新行時設置created
的列。
我可以做這樣的事情:
if session.query(Car).filter(Car.model=='Accord').first():
# this car already exists, so update the existing row
car = Car(
model = 'Accord',
latest_model_year = 2022,
)
session.merge(car)
else:
# this car does not exist, so create a new row
car = Car(
model = 'Accord',
latest_model_year = 2022,
created = datetime.now(),
)
session.add(car)
...但這是很多重復的代碼。 有沒有更好的辦法?
嘗試:
from sqlalchemy.sql import func
class Car:
model = Column(String, primary_key=True)
latest_model_year = Column(Integer)
created = Column(DateTime, default=func.now()) # <- HERE
文檔: 客戶端調用的 SQL 表達式
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.