![](/img/trans.png)
[英]Pandas showing only the unique instances of a value in a dataframe for a given id
[英]Insert a value into a database only if one column is unique for a given ID
目前,我有一个SQLite数据库,该数据库正在跟踪视图计数。 它具有用于查看的列,视频的ID以及上一次采样时间的时间戳。
目前,我正在使用(在Python中):
cursor.execute("INSERT INTO view_counts VALUES (?,?,?)", (views, id, time))
仅当观看次数对于给定ID唯一时,我如何插入视频?
例如,如果前面的行是:
views id timestamp
200 5 60
300 5 70
我只想在新观看次数超过300时插入视频。如果给定ID的观看次数仍为300,则我不想插入它。
请注意,我不能仅仅确保“观看次数”列是唯一的,因为具有不同ID的视频可能具有相同的观看次数。
谢谢你的帮助!
让数据库检查唯一性:
create table view_counts (
views,
id,
time,
unique(views,id)
)
这样,当视图和id不唯一时,您将收到IntegrityError
。
这可能不是执行此操作的最有效方法,但我相信它会起作用。 首先,选择具有所需ID的视频:
cursor.execute("SELECT * FROM view_counts WHERE id=?",(id))
然后,使用if语句检查值
while True:
row = cur.fetchone()
if row[0] > 300: #row[0] is the row your views should be in
cursor.execute("INSERT INTO view_counts VALUES (?,?,?)", (views, id, time))
break
就像我说的那样,这不是最好的方法。 我的直觉告诉我,您可以单独执行以下操作:
cursor.execute(UPDATE view_counts SET views=? WHERE views > ?", (views, old_views))
其中old_views
可能是传入的最后一个views
值(例如old_views = views
)
尽管此代码可能无法完全解决您的问题,因为我的sqlite并非如此,但我希望它能以某种方式解决您的问题。 如果您查找有关更新查询的更多信息,您也许可以修复我稍有猜测的工作代码。 据我所记得,SQLite3支持>
的使用,但是如果不是这样,那么开发能够获取当前视图计数的东西(就像我在上面的示例中所做的那样)应该很容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.