我有一个带有TSRANGE的Postgres数据库列来存储日期时间范围。执行 sql alchemy 查询后,我得到的结果行将进一步转换为字典样式的python对象,如下面的代码所示:
def row2dict(row):
d = {}
for column in row.__table__.columns:
d[column.name] = str(getattr(row, column.name)) # TSRANGE column returns this DateTimeRange(datetime.datetime(2018, 1, 11, 2, 16), datetime.datetime(2018, 1, 11, 9, 1, 30), '[)')
return d
我希望此功能返回类似 [" 2018-01-11 02:16:00"," 2018-01-11 09:01:30&#34 ;]。表示具有TSRANGE数据类型的特定列名。例如,对于holidays_time列,它可以是这样的:"holidays_time": ["2018-01-11 02:16:00","2018-01-11 09:01:30"]
。但是,此时电流输出低于:
TSRANGE COLUMN的当前输出:
"holidays_time": DateTimeRange(datetime.datetime(2018, 1, 11, 2, 16), datetime.datetime(2018, 1, 11, 9, 1, 30), '[)')
到目前为止我尝试了什么: 使用以下代码将此TSRANGE转换为DateTimeRange(python库):
d[column.name] = DateTimeRange(getattr(row, column.name))
如果我喜欢这个
d[column.name] = list(getattr(row, column.name))
获取列表中的日期范围,以便我可以迭代它们或通过索引访问它们,它显示
TypeError:' DateTimeRange'对象不可迭代
这种方法不起作用,因为我得到了相同的结果。即使我转换为str数据类型的结果也完全相同。任何帮助表示赞赏。