gpt4 book ai didi

python - 使用 matplotlib 和 psycopg2 的动态图

转载 作者:行者123 更新时间:2023-11-29 13:48:06 24 4
gpt4 key购买 nike

我正在制作一个从 postgresql 数据库中提取数据的 Flask 网络应用程序。我正在使用 psycopg2 来管理与数据库的连接。

如果我想要一段时间内(例如,过去 7 天)的用户事件图(活跃用户数),如何我用 matplotlib 动态表示这个?

我用于获取过去 7 天内用户数的 psycopg2 查询如下所示(已编辑):

timeInterval = 7;

def userCount(conn, cur):
cur.execute("""SELECT count(DISTINCT(username)) from user_table WHERE tstampz >
(current_timestamp - make_interval(days := %s))""", [timeInterval]
return cur.fetchone()[0]

我的问题是如何在我的 matplotlib 图形中获得此查询的结果?

最佳答案

首先,您需要一个显示时间戳的查询,否则您无法绘制时间序列图。我也不知道你在用那个“make_interval()”函数做什么,这不是必需的。所以你的查询应该是:

    cur.execute("""SELECT tstampz, count(DISTINCT(username)) 
from user_table
WHERE tstampz >
(current_timestamp - INTERVAL '7 days')
GROUP BY tstampz ORDER BY tstampz;""")

(顺便说一句,感谢您使用带时区的时间戳)

Matplotlib 希望您将数据重组为数组,因此您需要遍历它并构建数组:

tses = []
ucounts = []
for rec in cur:
tses.append(rec[0])
ucounts.append(rec[1])

然后您可以将这些分配给地 block 。请注意,此构造假设您的时间顺序没有间隙;如果这样做,您将需要采取更复杂的方法。

ax.plot(tses, ucounts, color='blue', label='User Count')

您可以通过 downloading the Jupiter notebook 找到更完整的示例来 self 关于 matplotlib 和 Postgres 的教程。

关于python - 使用 matplotlib 和 psycopg2 的动态图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45149264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com