文档章节

关于emysql的若干问题

双月通天
 双月通天
发布于 2015/08/05 11:06
字数 367
阅读 573
收藏 1

1 引言

       众所周知,用Erlang操作mysql数据库的需要通过emysql技术,emysql用起来非常简单,但是有些地方如果我们没有注意到就会有些问题。

2.问题汇总及解决

          我们通过emysql基本操作数据库,大致逻辑代码如下:

get_terminal_online_statistic( StartTime )->
SQL = "SELECT * FROM terminal_online_statistic WHERE statistic_time <'"++StartTime++"';",
lager:info("The SQL is : ~p~n",[SQL]),
{result_packet,_,_,Rows,_} = emysql:execute(nms_cache_pool,list_to_binary(SQL)),
Rows.

        一般这样的查询的结果存在Rows里面了是一个列表的形式

下面可以在nms_webserver里面查看其运行结果,效果如下图:

被红色标记的为要返回的结果。

       但是如果我们要查询一个满足条件的总数(count(*))的话,返回给我们的是一个字符“!”的列表,这样我们就会很郁闷。

这个问题描述如下

SELECT count(*) FROM terminal_online_statistic WHERE domain_moid = 'dcb80871-372b-4617-b329-9aafe6f78acb' && statistic_time BETWEEN '2015/07/28 19:47:32' AND '2015/08/04 19:47:32';

在数据库里面查询,运行的结果如下:

但是用emysql执行这个语句的返回结果如下:

我们也许会感到惊讶为什么不是33,但是erlang里面列表的字符其实就是整数,就会知道返回的就是33

我们只需要再对其进行提取就行了,方法如下:

获得的C就是33了,其实就是字符'!'的ASCII码,问题就解决了

© 著作权归作者所有

共有 人打赏支持
双月通天
粉丝 40
博文 279
码字总数 218946
作品 0
徐汇
程序员
私信 提问
加载中

评论(3)

双月通天
双月通天

引用来自“摩云菜”的评论

其实是这样的,emysql的返回值应该是 [[Value]] 这种类型,所以你在解析的时候,一定要记得写两个中括号,这样拿出来的就是正确的值了,如果只有一个中括号,那拿出来的就是 ! 这个符号

SQL = "SELECT s_memory FROM resource_limit;",
lager:info("The SQL is : ~p~n",[SQL]),
{result_packet,_,_,Row,_} = emysql:execute(nms_cache_pool,list_to_binary(SQL)),
lager:info("The Result is : ~p~n",[Row]),
case Row of
[] ->
  ?S_MEMORY_LIMIT;
[[undefined]] ->
  ?S_MEMORY_LIMIT;
[[MysqlValue]] ->
  MysqlValue
end;
嗯,是的,刚开始我是用一个中括号拿出来的,直接用两个中括号拿出来,就不用转了
双月通天
双月通天
对的,是有两个中括号。
摩云菜
摩云菜
其实是这样的,emysql的返回值应该是 [[Value]] 这种类型,所以你在解析的时候,一定要记得写两个中括号,这样拿出来的就是正确的值了,如果只有一个中括号,那拿出来的就是 ! 这个符号

SQL = "SELECT s_memory FROM resource_limit;",
lager:info("The SQL is : ~p~n",[SQL]),
{result_packet,_,_,Row,_} = emysql:execute(nms_cache_pool,list_to_binary(SQL)),
lager:info("The Result is : ~p~n",[Row]),
case Row of
[] ->
  ?S_MEMORY_LIMIT;
[[undefined]] ->
  ?S_MEMORY_LIMIT;
[[MysqlValue]] ->
  MysqlValue
end;
MySQL 中如何存储 emoji ?

问题还原 使用 erlang 存储一些特殊字符串到 MySQL 的时候,却没法读出来。经检查,这些字符串的二进制格式如下: <<240,159,152,134,240,159,152,144>> 查看二进制的 unicode 是什么? 14> ...

xdl刘涛
2016/08/22
34
0
erlang驱动使用mysql-otp

Magnus Ahltorp的Mysql Driver里面介绍emysql的缺陷: 1. 隔离不够好, 2.不能伸缩 mysql-otp使用1个进程1个mysql连接,隔离得很好。推荐使用。 mysql-otp-poolboy 使用poolboy + erlang-ot...

格通
2016/02/22
21
0
使用mailgun被qq邮箱拒收了

@红薯 你好,想跟你请教个问题: 关于 OSCHINA 的邮件被 QQ 邮箱拒收的问题 http://www.oschina.net/news/20100/dont-use-qq-mail-register-oschina 从今天开始,接收到大量的 qq 邮箱的邮件...

yelloweye
2014/04/23
1K
1
CUBA Studio 7.4 发布,企业级应用开发平台

CUBA Platform 是一款开源且免费的企业级应用开发框架,已有将近10年的发展历史,由俄罗斯的 Haulmont 公司开发,CUBA Platform 近期将正式登陆中国,将提供中文网站、中文社区、中文开发文档...

CUBAChina
02/23
0
0
【“录音证据”如何被采信】

width="auto" src="http://ss.csdn.net/p?http://mmbiz.qpic.cn/mmbiz/yqVAqoZvDibG3130Y2hAXktGHLUh928RJUsVuWRVZSjVNIbPaNtM6JFnMfgibOoOR2c4DENVvZnYbFhHJn9dFaYQ/640.gif?wxfrom=5&wxlaz......

xCnhYKoHj3eK
2018/01/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据剖析热点新闻:996、巴黎圣母院、奔驰维权为什么成为本周热搜

智能大数据专家表示:每一段重要的时期都会有一串隐秘的数字密码,请往下看: 本周共有50条新闻,作为嗅嗅的样本进行数据分析,得出以下统计图: 1.新闻热词折线统计图 在新闻标题及正文中,...

forespider
19分钟前
0
0
Coding and Paper Letter(六十四)

资源整理。 1 Coding: 1.交互式瓦片编辑器。 tile playground 2.R语言包autokeras,autokeras的R接口。autokeras是一个开源的自动机器学习的软件。 autokeras 3.斯坦福网络分析平台,用于网络...

胖胖雕
56分钟前
1
0
最简单的cd命令是个大坑!

BASH Shell 是大多 Linux 发行版的默认 shell,BASH 有一些自己的内置命令,cd 就是其中的一个。 在centos6里面,系统中不存在 cd 的二进制文件。但是你仍然可以运行该命令,这是因为 cd 是 ...

gaolongquan
今天
1
0
spring获取bean的几种方式

使用jdk:1.8、maven:3.3.3 spring获取Bean的方式 pom.xml文件内容: <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="......

Vincent-Duan
今天
2
0
一段话系列-Linux中IO的同步、异步、阻塞、非阻塞

首先我们框定一下背景,我们探讨的是Linux系统下的IO模型。 同步和异步是针对内核操作数据而言的,同步是指内核串行顺序操作数据,异步是指内核并行(或并发)操作数据,然后通过回调的方式通...

EasyProgramming
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部