我在MySQL中的搜索不起作用(Python)

时间:2016-09-16 18:58:59

标签: python mysql datetime

我试图从我拥有的数据库中获取信息。但是每当我搜索它时,查询后面都没有任何内容。这就是我所拥有的。

import datetime
import MySQLdb

db = MySQLdb.connect(user='root', passwd='', host='localhost', db = 'data') or die ('Error while connecting')
cursor = db.cursor()
sqlread = "SELECT * FROM humidity WHERE Date_Hour BETWEEN %s AND %s"

ts1 = ('%s/%s/%s 07:00:00') % (now.year, now.month, now.day)
ts2 = ('%s/%s/%s 03:00:00') % (now.year, now.month, now.day+1)

tsdata = (ts1,ts2)
cursor.excecute(sqlread,tsdata)
db.commit()
result = cursor.fetchall()
print result

因此,结果为0.但我在phpMyAdmin上进行了相同的搜索并且它有效。我做错了什么?

更新

杰森评论说,这是我的结果。 enter image description here 但是,我认为杰森是对的。我正在做一个制作一些图表的GUI。我有2个窗户。一个是使用matplotlib制作带动画的图形,程序使用从数据库重新选择的新数据制作图形,因此它总是在询问。另一个窗口只做一个查询,但它不起作用,所以它可能是因为我要求"两次"?。

1 个答案:

答案 0 :(得分:1)

你的db.commit()可能会把它扔掉。但是,很多因素都可以参与其中。您也可以考虑打印出您的SQL查询以查看正在放置的内容,如下所示:

尝试设置这样的代码,它应该引导您朝着正确的方向前进:

import MySQLdb as mdb
conn = mdb.connect('localhost', 'user', 'password', 'database_name')
try:
    cur = conn.cursor()
    ts1 = ('%s/%s/%s 07:00:00') % (now.year, now.month, now.day)
    ts2 = ('%s/%s/%s 03:00:00') % (now.year, now.month, now.day + 1)
    sqlread = "SELECT * FROM my_table where blah between {} and {}".format(ts1, ts2)
    print(sqlread)
    cur.execute(sqlread)
    res = cur.fetchall()
except mdb.Error as e:
    pass
finally:
    if conn:
        conn.close()