2016-09-16 2 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つの窓を持っています。 1つは、matplotlibを使ってアニメーションを使ってグラフを作成することです。プログラムはデータベースから再収集された新しいデータでグラフィックスを作成しますので、常に尋ねています。もう1つのウィンドウは1つのクエリを作成するだけで動作しないので、「2回」を求めているので可能です。

答えて

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

@AlejandroHarrisBonet日付はどのようにデータベースに保存されますか? - または/ですか?年/月/日ではなく年 - 月 - 日に日付を変更するとどうなりますか。 – CodeLikeBeaker

+0

こんにちはJason、実際には文字列として保存しています。 YYYY/MM/DD、データベースから日付を収集しようとする前にいくつかの問題があったので、DATETIME形式で行うべきかどうかはわかりません。 –

関連する問題