推荐学习书目
› 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
azure
V2EX  ›  Python

求助,如何把一个现有的key-value数据集合并到某个sql查询结果中?

  •  
  •   azure · Dec 30, 2012 · 4778 views
    This topic created in 5022 days ago, the information mentioned may be changed or developed.
    在数据库中取出id和name,然后我外部还有一个字典,{KEY,VALUE}是id和性别.
    所以现在有两个数据集:
    数据集1:
    select id,name from table.
    数据集2:
    {"1":"男","2":"女",.....}

    怎么把这两个数据合并起来让查询结果是

    id name sex
    1 james 男
    2 kobe 女


    先查询出数据库中的id和名字,然后循环赋值这样效率感觉好低下。 sql查询里有没有类似的解决方法?或者其他更好的解决方案?
    7 replies  •  1970-01-01 08:00:00 +08:00
    plprapper
        1
    plprapper  
       Dec 30, 2012
    没明白为啥性别没存数据库呢
    azure
        2
    azure  
    OP
       Dec 30, 2012
    @plprapper 这个代码只是为了让需求描述得更容易理解。真实需求这里不是性别,而是某个外部数据,或者一些经常需要变动所以存在内存缓存中并没有写到数据库的数据,而且这部分数据本身并不太需要本地化保存。
    plprapper
        3
    plprapper  
       Dec 30, 2012   ❤️ 1
    你数据不持久化到数据库。 这个和sql还能有啥联系吗?
    除非是数据库+插件+nosql 做个关联 。商业项目不推荐。

    另外所谓的效率低是什么意思 编码层面上的还是运行。数据量多大呢?
    不愿意写for循环就写到对象构造里面去呗 。
    运行层面,不知道你如何实现的呢。
    notedit
        4
    notedit  
       Dec 30, 2012
    你数据量有多少 循环一下比走一次网络快多了 循环一下百万级别的都不会有性能问题
    azure
        5
    azure  
    OP
       Dec 30, 2012
    @notedit 所以说,即使我把这些数据丢到另一个同服务器的数据库里做跨数据库查询,性能都不如循环嘛?

    以下两种情况相比循环处理,性能谁高?还是说,循环处理依然快过以下2种?
    1.新建一个同服务器上的数据库用来存数据集2,然后跨数据库查询。
    2.同数据库里新建一张表(但是因为这个数据库是一个完整系统,去申请建一个新的表会比较麻烦,不一定会被同意)。
    notedit
        6
    notedit  
       Dec 30, 2012
    @azure 如果是我选的话 我会选第二种方案

    为什么? 一是查询方便 而是没有给系统造成额外的复杂度

    不赞成跨数据库查询 给系统造成额外的复杂度

    你数据量有多少 百万级别的都可以放到进程内存中 遍历一边也就毫秒级的时间吧
    azure
        7
    azure  
    OP
       Dec 30, 2012
    @notedit 好吧。就按您的说法做。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2903 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 10:28 · PVG 18:28 · LAX 03:28 · JFK 06:28
    ♥ Do have faith in what you're doing.