geew
V2EX  ›  问与答

有关 torndb query 传入变量的问题

  •  
  •   geew · Dec 8, 2014 · 2186 views
    This topic created in 4203 days ago, the information mentioned may be changed or developed.
    In [43]: conn.query('select %s from topic order by %s limit 2', 'id', 'id desc')
    Out[43]: [{'id': u'id'}, {'id': u'id'}]

    In [44]: conn.query('select id from topic order by id desc limit 2')
    Out[44]: [{'id': 10L}, {'id': 9L}]


    一直是这么用的, 之前都没发现问题, 怎么现在就有问题了呢? 真是搞不懂了, 为啥以上两个执行结果不一样呢? query的变量不是这么传进去的吗
    1 replies    2014-12-09 00:29:59 +08:00
    geew
        1
    geew  
    OP
       Dec 9, 2014
    解决了 是我的用法有问题, %s是用来传变量的, 不应该用来传列名或者sql关键字, 因为这会被mysqldb做转化.
    In [43]: conn.query('select %s from topic order by %s limit 2', 'id', 'id desc')
    Out[43]: [{'id': u'id'}, {'id': u'id'}]
    -- 实际执行的是 select 'id' from topic order by 'id desc' limit 2
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1281 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:44 · PVG 07:44 · LAX 16:44 · JFK 19:44
    ♥ Do have faith in what you're doing.