アクセスしてデータを抽出したい mysql テーブルがあります。テーブルは次のように構成されています。
| | ID | 日付スタンプ | タイムスタンプ | 血糖 | 炭水化物 | インスリン |
| | 1 | 2013-08-05 | 18:28:17 | 6.7 | 76 | 6.6 |
NB:タイムスタンプ エントリは CURTIME() を使用して生成さ れます。
X 軸に時間 (HH:MM)、Y 軸に BloodSugar-value を使用して時系列をプロットするために、タイムスタンプと BloodSugar 値を抽出しようとしています。しかし、私はいくつかの問題に遭遇しています...
問題: Python でデータをリストにフェッチすると、タイムスタンプが datetime.timedelta(0, 58753) エントリとして表示されます。これらに対してデータをプロットできるように、これらを HH:MM にします。
質問: timedelta を HH:MM 形式に単純に再フォーマットする方法はありますか? これが不可能な場合は、これを回避する方法を教えてください (たとえば、mysqldb で別のフェッチ手法を使用するか、CURTIME() を別のものに置き換えるなど)。
免責事項:私は初心者で、学びたいと思っているので、できるだけ説明してください。ありがとう!!
コード:
import MySQLdb as mdb
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import dates
import datetime
con = mdb.connect('localhost', 'testuser', 'test623', 'test');
with con:
cur = con.cursor()
#importing data into a list for analysis
cur.execute("SELECT * FROM Diabetes")
rows = cur.fetchall()
data = []
for row in rows:
data.append(row)
A = data
d = [a[1] for a in A]
t = [a[2] for a in A]
b = [a[3] for a in A]
c = [a[4] for a in A]
novo = [a[5] for a in A]
#here is my attempt at trying to reformat the time-entries... But doesn't work..
formatted_time = []
for delta_time in t:
hours, remainder = divmod(delta_time[1], 3600)
minutes, seconds = divmod(remainder, 60)
duration_formatted = '%s:%s:%s' % (hours, minutes, seconds)
formatted_time.append(duration_formatted)
print formatted_time
fig, ax = plt.subplots()
ax.plot_date(t, b)
fig.autofmt_xdate()
plt.show()