Erlang学习笔记— Mnesia数据库使用入门

本文介绍如何使用Erlang内置的Mnesia数据库进行简单的数据操作,包括数据库初始化、数据记录的插入与删除及查询等基本功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

阅读了相关书籍和资料,总觉得入门不够简单,让人迷糊,最后还是自己总结一个简单点的入门吧。

Mnesia数据库是Erlang内置的一个DBMS,可以直接存储Erlang的各种数据结构。有其它语言编程经验的可能比较熟悉,要将某种语言中的数据结构放入数据库,就需要对其进行转换(如序列化、python的pickle等)。同时,Mnesia数据库还可以配置数据存储在内存或磁盘上,甚至在多台计算机上存储多个副本。

下面直接以程序加注释的形式来说明使用方法:

-module(mns).
-export([init/0,queryall/0,myinsert/0,delete_reco/1]).
-include_lib("stdlib/include/qlc.hrl").

-record(todo,{status=reminder,who=joe,text}).

%%数据库的初始化
init() ->
    %% 在本机初始化数据库
    mnesia:create_schema([node()]), %在本机节点上初始化数据库,函数的参数列表为节点列表
    %% mnesia:delete_schema([node()]) 删除初始化的数据库

    %% 启动数据库
    mnesia:start(),
    %% 创建表
    mnesia:create_table(todo,[{attributes,record_info(fields,todo)}]).

insert(Reco) ->
    %% 定义和插入数据
   mnesia:transaction(fun() -> mnesia:write(Reco) end).

insert_recos([]) -> ok;
insert_recos([H|T]) ->
    insert(H),
    insert_recos(T).

myinsert() ->
    Todolst = [#todo{},#todo{status=done},#todo{text="abcccc"}],
    insert_recos(Todolst).

delete_reco(Item) ->
    F = fun() -> mnesia:delete({todo,Item}) end,
    mnesia:transaction(F).

%% 定义数据查询工具函数
query(Q) ->
    F = fun() ->qlc:e(Q) end,
    {atomic,Val} = mnesia:transaction(F),
    Val.

%% 定义查询表中所有数据记录
queryall() ->
   query(qlc:q([X || X <- mnesia:table(todo)])).

执行过程如下图所示:


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值