SQLAlchemy 不遵守 default=datetime.datetime.utcnow
或 default=func.now()
(我都试过了)DateTime
列。
python :
class DataStuff(BASE):
"""some data"""
__tablename__ = 'datastuff'
_id = Column(Integer, primary_key=True)
_name = Column(String(64))
json = Column(sqlalchemy.UnicodeText())
_timestamp = Column(DateTime, default=datetime.datetime.utcnow)
MySQL:
mysql> describe datastuff;
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| _id | int(11) | NO | PRI | NULL | auto_increment |
| _name | varchar(64) | YES | | NULL | |
| json | text | YES | | NULL | |
| _timestamp | datetime | YES | | NULL | |
最佳答案
根据文档,当所需操作是在 CREATE TABLE
语句中的列上提供默认值时,使用 server_default
是可行的方法。
http://docs.sqlalchemy.org/en/rel_1_0/core/defaults.html
我最终使用 server_default
和 func.now()
函数而不是 default=datetime.datetime.utcnow
。
新代码:
from sqlalchemy import func
_timestamp = Column(DateTime, server_default=func.now())
结果:
+---------------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+-------------------+----------------+
| _timestamp | datetime | YES | | CURRENT_TIMESTAMP | |
中提琴
关于python - sqlalchemy 没有设置时间戳默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31567041/