いくつかの SqlAlchemy を Django に移植しようとすると、次のトリッキーな部分があります。
version = Column(
BIGINT,
default=literal_column(
'UNIX_TIMESTAMP() * 1000000 + MICROSECOND(CURRENT_TIMESTAMP)'
),
nullable=False)
literal_column
ビットを Djangoに移植するための最良のオプションは何ですか? これまでに得た最良のアイデアは、同じ生のSQLを実行するデフォルトとして設定する関数ですが、もっと簡単な方法があるかどうかわかりませんか? 私のgoogle-fooはそこで失敗しています。
編集: mysql によって作成されたタイムスタンプを使用する必要がある理由は、何かがどれだけ古いかを測定しているため (したがって、実際に時間を知る必要があるため)、正確さのために、タイムスタンプの権限を 1 つだけ持つ必要があるためです (したがって、サーバー間で異なる可能性があるシステム時間を調べる 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)
現時点では、これが私の最善/唯一の選択肢のように思えます。