初探erlang的mysql数据库使用

来源:互联网 发布:蛤蟆吃创建不了网络 编辑:程序博客网 时间:2024/05/22 07:00
选择应用:https://github.com/mysql-otp/mysql-otp-poolboy

  1. OTP框架结构,适合当前开发的服务框架
  2. 使用的基础库mysql-otp,使用者较多,作者为emysql的用户之一,比较靠谱

两种引用方式:
  1. my own supervisor:即添加到项目的监控树下,效果如图:
     

     没有启动新的application。
  1. 通过配置文件和服务依赖启动,效果如图:
         

 选择独立服务启动,原因是,独立引用,互不干涉,方便更新和维护。

数据交互模型

     表:user
     属性:id <str>, name <str>, age <int>

     mysql:
     输入支持binary和list两种格式:[<<"id">>,<<"name">>, ... ...] OR ["id", "name", ...]
     输出格式为binary:{ok, [<<"id">>, <<"name">>, <<"age">>, ... ...], [[<<"">>, <<"">>, ...], [<<"">>, <<"">>, ...], ... ...]

     erlang:
     model_table.erl
     create(Model) ->
          DbData = transform_to_sql_data(Model),
          %% insert to mysql.

     get(Index or Id) ->
          [DbData] = select from mysql,
          Model = transform_to_model(DbData),
          %% return Model

     get_list(Index or others) ->
         DbDatas = select from mysql,
         ModelList = transform_to_model()
         %% return ModelList

     Model = {user, <<"id">>, <<"name">>, ...}
     DbData = [<<"id">>, <<"name">>, ...]

     是否检查record与mysql表结构的关系?
     1.插入时,使用INSERT INTO table (id, name, ...) VALUES (?,?,?) 显式指定字段名称;取代 INSERT INTO table VALUES (?,?,?)的用法
     2.查询时,返回Keys=[<<"id">>,<<"name">>,...]对比record_info(table)定义:[id, name, ...]

     编码问题:统一使用utf8编码啊,erlang中使用的json库,已兼容编码。
0 0
原创粉丝点击