2016-09-16 78 views
2

我想从我有一个数据库中获取信息。但是每次我搜索它时,都说没有任何东西在查询之后。这是我的。我在MySQL搜索它不工作(Python)

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进行了相同的搜索,结果如下。我做错了什么?

UPDATE:

这里是我的结果作为贾森评论。 enter image description here 不过,我认为杰森是对的。我正在做一些图表的GUI。我有2个窗户。一种是使用matplotlib制作一个带有动画的图形,该程序使图形具有从数据库中回收的新数据,因此它总是在问。另一个窗口只是一个查询,但它不起作用,所以这可能是可能的,因为我问“两次”?

回答

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() 
+0

嗨杰森,谢谢为你的时间。我更新了我的帖子,也许你是对的。 –

+0

@AjjandroHarrisBonet您的日期如何存储在数据库中?它是否与 - 或/?如果将日期更改为年 - 月 - 日而不是年/月/日,会发生什么? – CodeLikeBeaker

+0

嗨贾森,其实我把它保存为一个字符串。 YYYY/MM/DD,我不知道我是否应该将它作为DATETIME格式,因为在尝试从数据库中收集日期之前,我遇到了一些问题。 –