我试图从我拥有的数据库中获取信息。但是每当我搜索它时,查询后面都没有任何内容。这就是我所拥有的。
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上进行了相同的搜索并且它有效。我做错了什么?
更新
杰森评论说,这是我的结果。 但是,我认为杰森是对的。我正在做一个制作一些图表的GUI。我有2个窗户。一个是使用matplotlib制作带动画的图形,程序使用从数据库重新选择的新数据制作图形,因此它总是在询问。另一个窗口只做一个查询,但它不起作用,所以它可能是因为我要求"两次"?。
答案 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()