mysql查询在mysql-python中得到不同的结果

时间:2012-11-19 15:49:23

标签: python mysql mysql-python

我得到了不同的结果,我理解为来自两个不同接口的相同查询。第一个是mysql shell:

mysql> select * from table where sub_date > '2012-11-08' order by sub_date asc limit 1\G
*************************** 1. row ***************************
                 id: **176041922**

第二个是我用一个小功能来测试一个查询,该查询将根据日期时间字段“sub_date”提取一定数量的记录:

>>> r_query('>', '2012-11-08', '1')
((**18393664L**, 3, .....)

这是python模块:

import MySQLdb
myuser = MySQLdb.connect(host='localhost', user='myuser', passwd='mypass', db='mydatabase')
cur = myuser.cursor()

def r_query(oper, date, limit):
    cur.execute("""select * from table where sub_date %s %s order by sub_date asc limit %s""" % (oper, date, limit)) 
    result = cur.fetchall()
    print result

1 个答案:

答案 0 :(得分:4)

我对python几乎一无所知。但我很确定你需要在日期参数周围添加额外的引号,以便在查询字符串中引用它。可能更像是:

cur.execute("""select * from table where sub_date %s '%s' order by sub_date asc limit %s""" % (oper, date, limit)) 

(注意第二个%s周围的额外引号)。