V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
geew
V2EX  ›  问与答

有关 torndb query 传入变量的问题

  •  
  •   geew · 2014-12-08 23:43:37 +08:00 · 1868 次点击
    这是一个创建于 3633 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 条回复    2014-12-09 00:29:59 +08:00
    geew
        1
    geew  
    OP
       2014-12-09 00:29:59 +08:00
    解决了 是我的用法有问题, %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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1054 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 22:33 · PVG 06:33 · LAX 14:33 · JFK 17:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.