簡體   English   中英

SQLAlchemy中一行的創建時間戳

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM