日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python创建sqlite3数据库_树莓派使用 Python + SQLite 建立温度数据库

發布時間:2024/8/23 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python创建sqlite3数据库_树莓派使用 Python + SQLite 建立温度数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

相比 MySQL 而言,SQLite 更為輕便、易于維護和部署。本文使用Python向SQLite數據庫中插入樹莓派溫度數據,SQLite數據庫中包含一張只包含三個字段的記錄表——參數名稱,時間和溫度值。本文重點解釋Python操作SQlite的具體方法,由于網上資料眾多,重復部分不再復述只做到具體情況具體分析。

1 創建數據庫和空表

【create-table-only.sql】

PRAGMA foreign_keys=OFF;

BEGIN TRANSACTION;

CREATE TABLE temps(

name DEFAULT 'RPi.CPU',

tdatetime DATETIME DEFAULT (datetime('now', 'localtime')),

temperature NUMERIC NOT NULL

);

COMMIT;

【簡要說明】

【1】數據庫包含三個字段,其中兩個字段有默認值。

【2】溫度值不能為空。

【3】DEFAULT與NOT NULL約束配合,簡化插入操作。

【create-table-only.sh】

#!/bin/sh

DBNAME="cpu.db"

rm -f $DBNAME

echo 開始插入數據

sqlite3 $DBNAME < create-table-only.sql

echo 插入完成

【簡要說明】

【1】chmod a+x create-table-only.sh增加可執行權限

【2】運行之后在同目錄下創建名為cpu.db的數據庫

2 Python插入操作

新建一個名為db-insert-temp.py的文件,具體內容如下

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import time

import sqlite3

def get_cpu_temp():

# 打開文件

file = open("/sys/class/thermal/thermal_zone0/temp")

# 讀取結果,并轉換為浮點數

temp = float(file.read()) / 1000

# 關閉文件

file.close()

return temp

def insert_cpu_temp(temp):

# 連接數據庫

conn=sqlite3.connect('cpu.db')

curs=conn.cursor()

# 插入數據庫

strtemp = "%.1f" %(temp);

curs.execute("INSERT INTO temps(temperature) VALUES((?))", (strtemp,))

conn.commit()

# 關閉數據庫

conn.close()

def main():

while True:

temp = get_cpu_temp()

insert_cpu_temp(temp)

time.sleep(5*60)

if __name__ == '__main__':

main()

【簡單說明】

【1】conn=sqlite3.connect(‘cpu.db’) 連接數據庫。

【2】curs=conn.cursor() 獲得游標。游標可理解為文件操作句柄,有了它就可以擺弄”cpu.db”了。

【3】重點注意curs.execute(“INSERT INTO temps(temperature) VALUES((?))”, (strtemp,))

【3.1】利用name和tdatetime的默認約束,此處僅插入溫度值

【3.2】execute函數中必須使用占位符(?),不能使用字符串格式化方法。如果還有兩個占位符,建議寫成這樣VALUES((?),(?))

【3.3】參數化查詢時 (strtemp,)為Python元組數據類型,如果只有一個元素時逗號不可省略。如果含有兩個參數,建議寫成這樣(paraA,paraB)

【4】勿忘提交操作conn.commit()

【5】勿忘關閉操作conn.close()

【查詢插入結果】

可在控制臺中輸入 sqlite3 cpu-temp “SELECT * FROM temps;”,返回結果如下。

RPi.CPU|2014-08-03 10:40:40|48.7

RPi.CPU|2014-08-03 10:41:41|48.7

RPi.CPU|2014-08-03 10:42:41|49.2

RPi.CPU|2014-08-03 10:43:41|48.7

RPi.CPU|2014-08-03 10:44:41|48.7

RPi.CPU|2014-08-03 10:45:41|49.2

3 開機后臺運行

【啟動腳本】——auto-start.sh

在該目錄下再新建一個auto-start.sh腳本,具體內容如下

#!/bin/bash

cd /home/pi/python-works/cpu-temp

python db-insert-temp.py &

【簡單說明】

【1】python db-insert-temp.py & 后臺運行db-insert-temp.py

【2】勿忘修改執行權限,chmod a+x auto-start.sh

【修改啟動項】——/etc/rc.local

在最后一行exit 0之前增加

# 樹莓派溫度保存到數據庫中

/home/pi/python-works/cpu-temp/auto-start.sh start

【重新啟動樹莓派】

sudo reboot

重啟之后再次查看表中內容,將會發現記錄一條一條增加。

4 總結

【1】python SQLite參數化操作時必須使用占位符?

【2】參數為Python元組類型,需要注意元素個數為1的情況。

【3】插入操作成功,結合Flask嘗試查詢操作。

5 參考資料

總結

以上是生活随笔為你收集整理的python创建sqlite3数据库_树莓派使用 Python + SQLite 建立温度数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。