#カロリー表データベースを見て、食事を決める。
何を食べるかを考える・悩む時間をなくすことで、時間を有効活用する。
やせたいので、カロリーを意識した食生活にする
参考(sqlite3操作):https://qiita.com/saira/items/e08c8849cea6c3b5eb0c
##目次
1.条件、ルール
2.Excelで作成したカロリー表をpandasで読み込む
3.pandasで読み込んだデータをデータベース化(.db)する
4.データベースからカロリーとその食物を出力する
###1.条件、ルール
・食べるものはデータベースに登録されたものだけとする。
・1日の摂取カロリーの目安を2300kcalとして、この値を超えないようにする。
・飲み物は、水、コーヒー、ビールしか飲まないので、ビールだけ意識。
・食べたいものが増えたらデータベースに追加する。
(悩む時間の削減と1日の摂取カロリーが上限超えなければ良い)
###2.Excelで作成したカロリー表をpandasで読み込む
import pandas as pd
#excelデータは事前に作成。
#1列目には食べ物の名称、2列目にはそのカロリー(kcal)がまとめてある
df = pd.read_excel("kcal_table.xlsx")
3.pandasで読み込んだデータをデータベース化(.db)する
import sqlite3
#データファイルの名称はカロリー.db
dbname = "カロリー.db"
conn = sqlite3.connect(dbname)
cur = conn.cursor()
#テーブル名をfoodsとし、if_exists="replace"で書き換え設定とした
df.to_sql("foods",conn,if_exists="replace",index=None)
conn.commit()
conn.close
###4.データベースからカロリーとその食物を出力する
import sqlite3
#作成したカロリー.dbを操作
dbname = "カロリー.db"
conn = sqlite3.connect(dbname)
cur = conn.cursor()
#データが多くなると、大量に出力されるかもしれないと考え、下限を設定
#食事の下限カロリーを入力
print("下限値を入力")
under = int(input())
#食事の上限カロリーを入力
print("上限値を入力")
upper = int(input())
#where kcal BETWEENで、kcalフィールド内で下限〜上限値内である食事を選択
#order by kcal desc で、kcalフィールドの値を降順で出力
select_sql = f'SELECT * FROM foods where kcal BETWEEN {under} and {upper} order by kcal desc'
#このexcelデータの場合、cur.execute(select_sql)の結果は、食事名とカロリーの組み合わせがリスト化されている
#[(豆腐,90kcal),(食事名,カロリー),...]のように。
#なので、for文を使って出力
for row in cur.execute(select_sql):
print(row)
cur.close()
conn.close()
##所感
データベース、SQLは使い慣れていないため、いい勉強になりました。
ただ、上画像を見る限り、ろくな食生活でなさそうです。
DXより食事の質を改善した方がいいかもしれない。