将TSRANGE(Postgres)数据类型转换为字符串

时间:2018-02-08 13:02:35

标签: python python-3.x postgresql

我有一个带有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数据类型的结果也完全相同。任何帮助表示赞赏。

0 个答案:

没有答案