Netatmo自作パート3:計測データをDBに放り込むその2

ちょっと今回は投稿手抜きしますね。お酒も飲んでないので(笑)。

ちなみに前回はココまで出来てます。

racchie.hatenablog.com

racchie.hatenablog.com

SQLをサンプルコードに書き込む

サンプルコードにSQLでデータベースに書き込む箇所を追記してみます。こんな感じで。

import sqlite3
from contextlib import closing

........

with closing(sqlite3.connect(dbname)) as cn:
    c = cn.cursor()
    sql = 'INSERT INTO tablename(Date, Temperature, Humidity, Pressure) VALUES (?,?,?,?);'
    weather = (dt, temp, hum, pres)
    c.execute(sql, weather)
    cn.commit()
    cn.close

実際にはこれをクラス化してしまえば良さそうですわね。def writeDB(dt, temp, hum, pres)みたいに。 ただ、サンプルも温度・湿度・気圧をクラス化していて、センサーの生値は使えなさそうな数値なので、やっぱり「変換」をしなくてはいけなさそうです。もうちょっと調べてみないと。

並行してPythonのバージョンアップ対応を

ちなみに、サンプルコードはPython2.7対応ということでした。せっかくなのでPython3対応にしようと思っています。 そして、サンプル自体も改造が必要なのである程度めどが付いたら「清書」する必要がありそうですね。清書したものは別途どこかに公開してみようかと。

その他気になって調べたこと

  1. SQL文(今回はInsert文)の書き方はこの辺のサイトがくわしいです。

qiita.com

qiita.com

  1. コードのコピペとかしようとしたらこんなエラーが出ました。

blog.yuizi.com

詳細はリンク先のほうが詳しいですが、どうやらPythonの3系は行頭インデントの文字コードまできちんと見ていて、Tabとスペース(通常は半角4つ)が同じインデントなのに「違うもの」としてエラー扱いにする、ということらしく。