98 lines
3.9 KiB
Python
98 lines
3.9 KiB
Python
import sqlite3
|
||
from pathlib import Path
|
||
|
||
DB_PATH = Path(__file__).parent / "mcu.db"
|
||
|
||
def init_db():
|
||
conn = sqlite3.connect(DB_PATH)
|
||
cur = conn.cursor()
|
||
cur.execute("""
|
||
CREATE TABLE IF NOT EXISTS mcu (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT, -- ID
|
||
name TEXT NOT NULL, -- 名称
|
||
core_num TEXT NOT NULL, -- 核心数量
|
||
core_type TEXT NOT NULL, -- 核心架构
|
||
instruction_set TEXT, -- 指令集架构
|
||
coremark TEXT, -- CoreMark 分数
|
||
coremark_per_mhz REAL, -- CoreMark/MHz
|
||
frequency TEXT NOT NULL, -- 主频 MHz
|
||
flash TEXT, -- Flash KB
|
||
rom TEXT, -- ROM KB
|
||
ram TEXT, -- RAM KB
|
||
sram TEXT, -- SRAM KB
|
||
sram_in_rtc TEXT, -- RTC SRAM KB
|
||
bus_width TEXT, -- 总线宽度 bit
|
||
cache_type TEXT, -- Cache 类型 (L1/L2)
|
||
l1_cache_size TEXT, -- L1 Cache 大小 KB
|
||
l2_cache_size TEXT, -- L2 Cache 大小 KB
|
||
l3_cache_size TEXT, -- L3 Cache 大小 KB
|
||
pipeline_depth TEXT, -- 流水线深度
|
||
simd_support BOOLEAN, -- SIMD 支持
|
||
fpu TEXT, -- FPU 支持 (Single/Double Precision)
|
||
package TEXT, -- 封装
|
||
gpios TEXT, -- GPIO 引脚数量
|
||
uarts TEXT, -- UART 数量
|
||
i2cs TEXT, -- I2C 数量
|
||
i2ses TEXT, -- I2S 数量
|
||
spis TEXT, -- SPI 数量
|
||
spi_protocols TEXT, -- SPI 协议
|
||
systems TEXT, -- 系统
|
||
manufacturer TEXT, -- 厂商
|
||
link TEXT -- 链接
|
||
)
|
||
""")
|
||
conn.commit()
|
||
conn.close()
|
||
|
||
# ==================== 查询所有 MCU(关键字段) ====================
|
||
def get_all_mcus():
|
||
conn = sqlite3.connect(DB_PATH)
|
||
cur = conn.cursor()
|
||
cur.execute("SELECT id, name, core_num, core_type, rom, ram, sram, flash, frequency, manufacturer FROM mcu")
|
||
rows = cur.fetchall()
|
||
conn.close()
|
||
return [{"id": i, "name": n, "core_num": cn, "core_type": ct, "rom": ro, "ram": ra, "sram": sra, "flash":fl, "frequency": f, "manufacturer": m}
|
||
for i, n, cn, ct, ro, ra, sra, fl, f, m in rows]
|
||
|
||
# ==================== 查询单个 MCU(完整字段) ====================
|
||
def get_mcu(mcu_id):
|
||
conn = sqlite3.connect(DB_PATH)
|
||
conn.row_factory = sqlite3.Row # 允许返回 dict
|
||
cur = conn.cursor()
|
||
cur.execute("SELECT * FROM mcu WHERE id=?", (mcu_id,))
|
||
row = cur.fetchone()
|
||
conn.close()
|
||
return dict(row) if row else None
|
||
|
||
# ==================== 插入 MCU(支持所有字段) ====================
|
||
def add_mcu(**fields):
|
||
"""动态插入 MCU(支持所有字段)"""
|
||
keys = ",".join(fields.keys())
|
||
placeholders = ",".join("?" for _ in fields)
|
||
values = tuple(fields.values())
|
||
|
||
conn = sqlite3.connect(DB_PATH)
|
||
cur = conn.cursor()
|
||
cur.execute(f"INSERT INTO mcu ({keys}) VALUES ({placeholders})", values)
|
||
conn.commit()
|
||
conn.close()
|
||
|
||
# ==================== 更新 MCU(支持所有字段) ====================
|
||
def update_mcu(mcu_id, **fields):
|
||
"""动态更新 MCU(支持所有字段)"""
|
||
set_clause = ",".join(f"{k}=?" for k in fields.keys())
|
||
values = tuple(fields.values()) + (mcu_id,)
|
||
|
||
conn = sqlite3.connect(DB_PATH)
|
||
cur = conn.cursor()
|
||
cur.execute(f"UPDATE mcu SET {set_clause} WHERE id=?", values)
|
||
conn.commit()
|
||
conn.close()
|
||
|
||
# ==================== 删除 MCU ====================
|
||
def delete_mcu(mcu_id):
|
||
conn = sqlite3.connect(DB_PATH)
|
||
cur = conn.cursor()
|
||
cur.execute("DELETE FROM mcu WHERE id=?", (mcu_id,))
|
||
conn.commit()
|
||
conn.close() |