数据库sqlite3
以创建数据库(2023-12-28.db),当前时间13点,精确到小时(table_13),创建。
import sqlite3
import os
from datetime import datetime
# 指定数据库文件夹路径
db_dir = "/home/pi/Desktop/sleep/file/sqlite_file/"
def create_table(db_path, table_name):
# 连接数据库,如果不存在则会创建
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
sql = '''
CREATE TABLE IF NOT EXISTS '{}' (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
temperature FLOAT,
humidity FLOAT,
light_intensity FLOAT,
co2_level FLOAT,
sound_level FLOAT,
wind_speed FLOAT
)
'''.format(table_name)
# 创建表
cursor.execute(sql)
# 提交更改并关闭连接
conn.commit()
conn.close()
def insert_data(db_path, table_name, temperature, humidity, light_intensity, co2_level, sound_level, wind_speed):
create_table(db_path, table_name) # 创建表格
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# 获取当前时间
current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
# 插入数据
cursor.execute(f'''
INSERT INTO {table_name} (timestamp, temperature, humidity, light_intensity, co2_level, sound_level, wind_speed)
VALUES (?, ?, ?, ?, ?, ?, ?)
''', (current_time,temperature, humidity, light_intensity, co2_level, sound_level, wind_speed))
# 提交更改并关闭连接
conn.commit()
conn.close()
def query_data(db_path, table_name):
create_table(db_path, table_name) # 创建表格
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# 查询数据
cursor.execute(f'SELECT * FROM {table_name}')
data = cursor.fetchall()
# 关闭连接
conn.close()
return data
def insert_batch_data(db_path, table_name, batch_data):
if not batch_data:
return
create_table(db_path, table_name) # 创建表格
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# 计算平均值
avg_temperature = sum(entry[0] for entry in batch_data) / len(batch_data)
avg_humidity = sum(entry[1] for entry in batch_data) / len(batch_data)
avg_light_intensity = sum(entry[2] for entry in batch_data) / len(batch_data)
avg_co2_level = sum(entry[3] for entry in batch_data) / len(batch_data)
avg_sound_level = sum(entry[4] for entry in batch_data) / len(batch_data)
avg_wind_speed = sum(entry[5] for entry in batch_data) / len(batch_data)
# 获取当前时间
current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
# 插入平均值数据
cursor.execute(f'''
INSERT INTO {table_name} (timestamp, temperature, humidity, light_intensity, co2_level, sound_level, wind_speed)
VALUES (?, ?, ?, ?, ?, ?, ?)
''', (current_time, avg_temperature, avg_humidity, avg_light_intensity, avg_co2_level, avg_sound_level, avg_wind_speed))
# 提交更改并关闭连接
conn.commit()
conn.close()
def get_db_path():
# 获取当前日期
current_date = datetime.now().strftime('%Y-%m-%d')
# 构建数据库文件名
db_name = f"{current_date}.db"
# 构建数据库文件路径
db_path = os.path.join(db_dir, db_name)
return db_path
def get_table_name():
# 获取当前小时
current_hour = datetime.now().strftime('%H')
# 构建表名
table_name = f"table_{current_hour}"
return table_name
# 示例用法
#db_path = get_db_path()
#table_name = get_table_name()
# 插入单条数据
#insert_data(db_path, table_name, 25.5, 60, 500, 400, 70, 3.5)
# 插入批量数据
#data_batch = [
# (25.5, 60, 500, 400, 70, 3.5),
# (26.5, 62, 510, 410, 75, 3.8),
# 添加更多数据
#]
#insert_batch_data(db_path, table_name, data_batch)
# 查询数据
#query_result = query_data(db_path, table_name)
#print(query_result)