create_time
とupdate_time
をMySQLデータベースで高精度(ミリ秒/マイクロ秒精度)で宣言しようとしています。問題は、これらの2つの要件を実行するための正しい構文/関数を見つけることができないことです。私はMySQLは私がデータベースの引数server_default
を使用する必要がMySQLの方言DATETIME(fsp=6)
(またはTIMESTAMP(fsp=6)
) データベース側で、デフォルトの高精度datetimeを宣言する方法mysqlを使用したデフォルトの更新+
- :これまで掘り
仮定/セットのデフォルト私はここで
ON UPDATE NOW(6)
を設定するかどうかはわかりません
from datetime import datetime
from sqlalchemy.dialects.mysql import DATETIME
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.sql import func
def create_declarative_base():
base = declarative_base()
base.__table_args__ = {
'mysql_engine': 'InnoDB',
'mysql_charset': 'utf8',
}
return base
Base = create_declarative_base()
class CreateUpdateTable(Base):
__tablename__ = 'create_update_table'
create_time = Column(DATETIME(fsp=6), server_default=func.now(), nullable=False)
update_time = Column(DATETIME(fsp=6), server_default=func.now(), onupdate=datetime.utcnow, nullable=False)
func.now()
がcreate_time DATETIME(6) NOT NULL DEFAULT now()
にシリアル化されるが、それは私も簡単なserver_default='NOW(6)'
を行うことを試みた...now(6)
にする必要があるが、それは(create_time TIMESTAMP(6) NOT NULL DEFAULT 'now(6)'
に変換として、私はInvalid default value for 'create_time'
取得、これを実行していますここで表現は文字列です...)
[docs]の例(http://docs.sqlalchemy.org/ja/latest/core/metadata.html#sqlalchemy.schema.Column.params)のように 'text'関数を試したことがありますか? .server_default)? – Terminus