V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
rogwan
V2EX  ›  Python

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

  •  
  •   rogwan · 2016-11-07 08:38:10 +08:00 · 1634 次点击
    这是一个创建于 2939 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    5 条回复    2016-11-08 10:50:27 +08:00
    WangYanjie
        1
    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
        2
    rogwan  
    OP
       2016-11-07 10:41:49 +08:00
    @WangYanjie 查 sqlalchemy session 重的数据,不是列表 A 中的数据。检查列表中是不是有某个数据 for in 判断一下就可以了。但是,这个字符串还在 sqlalchemy session 中的时候,怎么判断?

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

    另外: 一个临时的列表为什么需要保存到 SQLAlchemy 的 session 中而不是其他地方呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1177 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 18:00 · PVG 02:00 · LAX 10:00 · JFK 13:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.