LoginSignup
0
0

More than 1 year has passed since last update.

小さなDX②:python sqlite3で食事の内容を決める

Posted at

カロリー表データベースを見て、食事を決める。

何を食べるかを考える・悩む時間をなくすことで、時間を有効活用する。
やせたいので、カロリーを意識した食生活にする

参考(sqlite3操作):https://qiita.com/saira/items/e08c8849cea6c3b5eb0c

目次

1.条件、ルール
2.Excelで作成したカロリー表をpandasで読み込む
3.pandasで読み込んだデータをデータベース化(.db)する
4.データベースからカロリーとその食物を出力する

1.条件、ルール

・食べるものはデータベースに登録されたものだけとする。
・1日の摂取カロリーの目安を2300kcalとして、この値を超えないようにする。
・飲み物は、水、コーヒー、ビールしか飲まないので、ビールだけ意識。
・食べたいものが増えたらデータベースに追加する。
(悩む時間の削減と1日の摂取カロリーが上限超えなければ良い)

2.Excelで作成したカロリー表をpandasで読み込む

pandas,excelデータ読み込み
import pandas as pd

#excelデータは事前に作成。
#1列目には食べ物の名称、2列目にはそのカロリー(kcal)がまとめてある
df = pd.read_excel("kcal_table.xlsx")

3.pandasで読み込んだデータをデータベース化(.db)する

sqlite3
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()

※mac ターミナルでの出力結果
screen 1.png

所感

データベース、SQLは使い慣れていないため、いい勉強になりました。

ただ、上画像を見る限り、ろくな食生活でなさそうです。
DXより食事の質を改善した方がいいかもしれない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0