sqlalchemy session 中的数据,可以查询吗?

2016-11-07 08:38:10 +08:00
 rogwan

有一个 while 循环需要不断的收集用户的兴趣标签,比如:运动、读书、电影等等,然后把这些标签不断的 append 的一个列表 A 中。

在 while 循环的过程中,并不存储到数据库中,只是临时存储到 sqlalchemy session 中,等整个循环做完了,在把这个列表 A 存储。

这样有个问题,比如“读书”这个标签出现两次,列表 A 中会出现两个“读书”字符串。

用什么方式,可以在查询 session 中是否已经有重复的数据出现?

1580 次点击
所在节点    Python
5 条回复
WangYanjie
2016-11-07 09:09:07 +08:00
你是要查 session 还是列表 A ?看完你的描述也是一头包。
session 用来暂存数据库数据的是个 dict ,何来重复之说, see: http://docs.sqlalchemy.org/en/latest/orm/session_api.html#sqlalchemy.orm.session.Session.identity_map

要是 list 的重复项的话,不告诉你,这是 Python 的高级用法
rogwan
2016-11-07 10:41:49 +08:00
@WangYanjie 查 sqlalchemy session 重的数据,不是列表 A 中的数据。检查列表中是不是有某个数据 for in 判断一下就可以了。但是,这个字符串还在 sqlalchemy session 中的时候,怎么判断?

list 去重的方法很多吧,只是不想生成列表后再去重,是想不把重复数据加到列表里去。
WangYanjie
2016-11-07 18:05:08 +08:00
@rogwan 怎么算重,你的“读书”是主键?自己 pdb ,看看 identity_map
rogwan
2016-11-07 18:50:22 +08:00
@WangYanjie 就是列表 A 中出现,比如:['读书', '电影', '读书'],出现两次'读书'就算重复啊
banxi1988
2016-11-08 10:50:27 +08:00
@rogwan 虽然不是很明白你的问题. 但是
那你用 set 来存储就不会有重复的了.

另外: 一个临时的列表为什么需要保存到 SQLAlchemy 的 session 中而不是其他地方呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/318592

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX