数据库


必威是什么Home Assistant使用数据库存储事件和参数以进行历史记录和跟踪。使用的默认数据库是sqlite并且数据库文件存储在您的配置目录(例如。,/home-assistant_v2.db的路径);但是,可以使用其他数据库。如果您喜欢运行数据库服务器(例如PostgreSQL),请使用录音机零件

要从命令行手动使用SQLite数据库,您将需要一个安装sqlite3。或者sqlite的DB浏览器提供了一个查看器,用于探索数据库数据和执行SQL命令的编辑器。首先加载数据库sqlite3

$sqlite3 home-Assistant_v2.db sqlite版本3.13.0 2016-05-18 10:57:30输入“。帮助”为了用法提示。sqlite>

它有助于设置一些选项以使输出更可读:

sqlite> .hader在sqlite上> .mode列

你也可以开始sqlite3并稍后附加数据库。不确定您正在使用什么数据库?检查它,特别是如果您要删除数据。

sqlite> .databasesseq名称文件------------------------------------------------------------------------------------------------------------------------0 main/home/fab/.homeassistant/home-assistant_v2.db

模式

从您当前的家庭助理数据库中获取所有可用表:必威是什么

sqlite>从sqlite_master选择SQL;-------------------------------------------------------------------------------------------------------------------------------------创建表事件((event_id integer而不是null,event_type varchar((32,event_data文本,原点varchar((32,Time_fired DateTime,创建的DateTime,Context_ID Varchar((36,context_user_id varchar((36,context_parent_id字符((36, 首要的关键((event_id创建表Recorder_runs((run_id integer而不是null,启动dateTime,“结尾”DateTime,loss_correct boolean,创建了DateTime,主键((run_id, 查看((cleast_cormect in((0,1))创建表Schema_changes((change_id integer而不是null,schema_version Integer,更改DateTime,主键((change_id创建表状态((state_id integer而不是null,域varchar((64,entity_id varchar((255,状态varchar((255,属性text,event_id integer,last_changed dateTime,last_updated dateTime,创建的dateTime,context_id varchar((36,context_user_id varchar((36,context_parent_id字符((36,old_state_id Integer,主键((state_id,外键((event_id参考事件((event_id创建表Sqlite_stat1((TBL,IDX,Stat在事件上创建索引ix_events_context_user_id((context_user_id在事件上创建索引ix_events_event_type((事件类型在事件上创建索引ix_events_context_id((context_id在事件上创建索引ix_events_time_time_fired((time_fired创建index ix_recorder_runs_start_end在recorder_runs上((开始,“结尾”在状态上创建索引ix_states_entity_id((ENTITY_ID在状态上创建索引ix_states_context_user_id((context_user_id创建索引IX_STATES_LAST_UPDED在状态上((最近更新时间在状态上创建索引ix_states_event_id((event_id创建索引IX_STATES_ENTITY_ID_LAST_UPDED在状态上((entity_id,last_upded在状态上创建索引ix_states_context_id((context_id在状态上创建索引IX_STATES_CONTEXT_PARENT_ID((context_parent_id在事件上创建索引ix_events_context_parent_id((context_parent_id

仅显示有关状态表(因为我们在下一个示例中使用了该表):

sqlite>从sqlite_master选择SQL类型='桌子'和tbl_name='状态';

询问

表中的可用列的识别已完成,我们现在能够创建一个查询。让我们列出您的十大实体:

sqlite> .width 30,10,sqlite>选择entity_id,计数((*按照entity_id订单从国家组计数,计数desc limit 10;entity_id计数------------------------------------------------------sensor.cpu 28874 sun.sun 21238 sensor.time 18415 sensor.new_york 18393 cover.kitchen_cover 17811 switch.mystrom_switch 14101 sensor.internet_time 12963 sensor.solar_angle1 11397 sensor.solar_angle 10440 group.all_switches 8018

删除

如果您不想保留某些实体,则可以通过使用该实体永久删除它们录音机提供的服务

有关与数据库合作的更具交互式方式,请检查数据科学门户网站

Baidu