2009-06-13 32 views
0

它应该很简单,我花了最后一小时寻找答案。这是在Python 2.6上使用psycopg2。Python和psycopg2 - 原始sql从整型标准表中选择

我需要的是这样的:

special_id = 5 
    sql = """ 
      select count(*) as ct, 
      from some_table tbl 
      where tbl.id = %(the_id) 
     """ 
cursor = connection.cursor() 
cursor.execute(sql, {"the_id" : special_id}) 

我不能得到这个工作。如果是special_id一个字符串,我可以用%(the_id)s代替%(the_id),而且事情很好。但是,我希望它使用整数,以便正确地打印我的索引。

在互联网上psycopg2有一个惊人的缺乏具体信息。我希望有人能够回答这个看似简单的问题。

回答

2

PEP 249,因为在psycopg2 paramstylepyformat,你需要使用%(the_id)s即使对于非字符串 - 相信它会做正确的事。

顺便说一句,如果您使用正确的拼写(不存在h),但是即使拼写错误,我也很惊讶您没有得到“您的意思”提示(我做过当我故意尝试!)。

+0

我*恨*相信数据库驱动程序做正确的事情。我被隐藏的Sybase日期转换丢失索引太多次了。我想我无法选择psycopg。至于拼写,我猜想精神病的正确拼写的心智形象排除了Google的任何建议 - 感谢指针。 – 2009-06-13 04:41:28