1. ホーム
  2. python

[解決済み] SQLAlchemy のデフォルトの DateTime

2022-02-15 22:01:15

質問

これは私の宣言型モデルです。

import datetime
from sqlalchemy import Column, Integer, DateTime
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Test(Base):
    __tablename__ = 'test'

    id = Column(Integer, primary_key=True)
    created_date = DateTime(default=datetime.datetime.utcnow)

しかし、このモジュールをインポートしようとすると、このようなエラーが発生します。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "orm/models2.py", line 37, in <module>
    class Test(Base):
  File "orm/models2.py", line 41, in Test
    created_date = sqlalchemy.DateTime(default=datetime.datetime.utcnow)
TypeError: __init__() got an unexpected keyword argument 'default'

Integer型を使うと、デフォルト値を設定することができるんだ。どうなっているんだ?

どうすればいいですか?

DateTime には、入力としてデフォルトキーがありません。デフォルトのキーは、入力として Column 関数を使用します。これを試してみてください。

import datetime
from sqlalchemy import Column, Integer, DateTime
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Test(Base):
    __tablename__ = 'test'

    id = Column(Integer, primary_key=True)
    created_date = Column(DateTime, default=datetime.datetime.utcnow)