循环三天

时间:2016-03-12 12:45:56

标签: python postgresql

在我的postgres表中,我有用户和他们拍照的时间。我想定义用户的不同轨道。首先,我说在同一个用户的3天内是相同的轨道,然后开始下一个轨道。我想在我的表中添加一列,我将保存该轨道的唯一编号。我已经弄明白了如何定义每个用户的开始和结束日期。但我不知道如何将其分为三天。

    cur.execute("""SELECT users From table;""")
    dbrows = cur.fetchall()
    for k in set(dbrows):
        cur.execute("""SELECT time From table where users ="""+k+""";""")
        dbrows_time = cur.fetchall()
        time_period = []
        for i in dbrows_time:
            new_date_time = datetime.fromtimestamp(int(i)).strftime('%Y-%m-%d %H:%M:%S')
            new_date = new_date_time[0:10]
            time_period.append(new_date)
        period = len(set(time_period))
        beginning = time_period[0]
        end = time_period[-1]
        beginning = datetime.strptime(beginning, "%Y-%m-%d")
        end = datetime.strptime(end, "%Y-%m-%d")
        delta=timedelta(days=3)

这里应该有一些循环"每三天创建一个新的唯一编号"。或者,当我在表中插入时,它应该在SQL中完成吗?

        INSERT INTO table_tracks the number of each track
        conn.commit()

我可以像这样每三个条目插入一些数字,但我不知道如何做三天的事情。

    cur.execute("INSERT INTO table_track (id, users, link, tags, time, track, geom) select id, users, link, tags, time, ((row_number() over (ORDER BY users DESC) - 1) / 3) + 1, geom from table;""")

数据基本上采用以下形式:

    user time      geometry
    1    1.03.2015 geometry
    1    2.03.2015 geometry
    ......
    2    01.03.2015 geometry
    ......

每个用户都有唯一的ID和我转换为日期时间格式的时间。期望的结果是:

    user time geometry       track_number 
    1    1.03.2015 geometry  1
    1    2.03.2015 geometry  1
    ......
    2    01.03.2015 geometry 15
    ......

track_number对于每个用户和每三天是唯一的。让我们说用户在3月1日,2日和3日拍摄照片,然后在4日,5日和6日拍照。这些将是不同的轨道(在真实的单词中可能不是理想的)。但是如果这些照片是在3月1日,2日和4日,5日,8日,那就特别有趣了。然后我会说这些应该是三个轨道:第1和第2,第4和第5和第8。所以我的意思是时间三天。如果三天内只有一张照片,那么它只有一首曲目。这样的事情。谢谢!! 任何想法或方向都非常感谢!

0 个答案:

没有答案