0

2つの異なるインターフェースからの同じクエリであると理解しているもので、異なる結果が得られています。1つ目はmysqlシェルです。

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

2つ目は、日時フィールド「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
4

1 に答える 1

4

私はPythonについてほとんど何も知りません。ただし、クエリ文字列で引用符で囲むには、日付パラメータを引用符で囲む必要があると確信しています。おそらくもっと似ています:

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

(2番目の%sの前後の余分な引用符に注意してください)。

于 2012-11-19T15:56:39.213 に答える