sql >> データベース >  >> RDS >> Mysql

djangoのタイムスタンプフィールド

    実際、これについては非常に有益で有益な記事がありました。ここ: http://ianrolfe.livejournal.com/36017.html

    このページのソリューションは少し廃止されているため、次のようにしました。

    from django.db import models
    from datetime import datetime
    from time import strftime
    
    class UnixTimestampField(models.DateTimeField):
        """UnixTimestampField: creates a DateTimeField that is represented on the
        database as a TIMESTAMP field rather than the usual DATETIME field.
        """
        def __init__(self, null=False, blank=False, **kwargs):
            super(UnixTimestampField, self).__init__(**kwargs)
            # default for TIMESTAMP is NOT NULL unlike most fields, so we have to
            # cheat a little:
            self.blank, self.isnull = blank, null
            self.null = True # To prevent the framework from shoving in "not null".
    
        def db_type(self, connection):
            typ=['TIMESTAMP']
            # See above!
            if self.isnull:
                typ += ['NULL']
            if self.auto_created:
                typ += ['default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP']
            return ' '.join(typ)
    
        def to_python(self, value):
            if isinstance(value, int):
                return datetime.fromtimestamp(value)
            else:
                return models.DateTimeField.to_python(self, value)
    
        def get_db_prep_value(self, value, connection, prepared=False):
            if value==None:
                return None
            # Use '%Y%m%d%H%M%S' for MySQL < 4.1
            return strftime('%Y-%m-%d %H:%M:%S',value.timetuple())
    

    これを使用するには、次のことを行う必要があります。timestamp = UnixTimestampField(auto_created=True)

    MySQLでは、列は次のように表示されます。'timestamp' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    これの唯一の欠点は、MySQLデータベースでのみ機能することです。ただし、他の人のために簡単に変更できます。



    1. AndroidSQLiteの挿入または更新

    2. AVG()–MySQLの列の平均値を計算します

    3. ElCapitanで再起動せずにMySQLを終了します

    4. JPAを使用してUUIDを文字列としてmysqlに保存する