SQLAlchemy:格式化db.DateTime()列结果

时间:2016-01-28 11:18:14

标签: datetime python-3.x sqlalchemy

我有一个相对简单的SQLAlchemy查询(在MySQL数据库上):

my_date = db.session.query(func.max(MyTable.date_column)).one()

查询列的类型为db.DateTime()

现在我想在my_date中格式化返回的日期:

my_date.isoformat() # fails
my_date.strftime("%Y-%m-%d %H:%M:%S %z") # fails

我得到的这个对象是什么,我需要做些什么才能获得可以格式化的日期时间对象?

当我使用调试器检查返回的对象时,我看到以下内容:(datetime.datetime(2016, 1, 28, 12, 35, 17),) - 但是真正的Python datetime.datetime对象在调试器中看起来有所不同。

dir(my_date)返回以下内容:

['__add__', '__class__', '__contains__', '__delattr__', '__dir__',
'__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', 
'__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', 
'__iter__', '__le__', '__len__', '__lt__', '__module__', '__mul__', 
'__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', 
'__setattr__', '__sizeof__', '__slots__', '__str__', '__subclasshook__', 
'_asdict', '_fields', '_real_fields', 'count', 'index', 'keys']

1 个答案:

答案 0 :(得分:1)

one()将结果返回为KeyedTuple

您可以使用scalar()

my_date = db.session.query(func.max(MyTable.date_column)).scalar()

或从元组中获取价值

my_date = db.session.query(func.max(MyTable.date_column)).one()[0]