尝试将一些 SqlAlchemy 移植到 Django,但我遇到了这个棘手的问题:
version = Column(
BIGINT,
default=literal_column(
'UNIX_TIMESTAMP() * 1000000 + MICROSECOND(CURRENT_TIMESTAMP)'
),
nullable=False)
literal_column
将位移植到 Django的最佳选择是什么?到目前为止,我最好的想法是一个函数设置为执行相同原始 sql 的默认值,但我不确定是否有更简单的方法?我的 google-foo 在那里让我失望了。
编辑:我们需要使用 mysql 创建的时间戳的原因是我们正在测量某些东西的过时程度(所以我们需要实际知道时间)并且为了正确性,我们希望只有一个时间戳权限(所以我们不会使用查看系统时间的 python 函数引入错误,这可能因服务器而异)。
目前我有:
def get_current_timestamp(self):
cursor = connection.cursor()
cursor.execute("SELECT UNIX_TIMESTAMP() * 1000000 + MICROSECOND(CURRENT_TIMESTAMP)")
row = cursor.fetchone()
return row
version = models.BigIntegerField(default=get_current_timestamp)
在这一点上,这听起来像是我最好/唯一的选择。