二郎 mysql 例子
Posted
技术标签:
【中文标题】二郎 mysql 例子【英文标题】:Erlang mysql example 【发布时间】:2010-01-13 21:52:48 【问题描述】:只是想知道是否有人可以给出使用 erlang-mysql 模块的工作示例 (http://code.google.com/p/erlang-mysql-driver/)。
我是 erlang 新手,我正在尝试用一些 erlang 批处理替换一些旧脚本。我能够连接到数据库甚至完成查询,但我不确定如何使用结果。这是我目前拥有的:
-include("../include/mysql.hrl").
...
mysql:start_link(p1, "IP-ADDRESS", "erlang", "PASSWORD", "DATABASE"),
Result1 = mysql:fetch(p1, <<"SELECT * FROM users">>),
io:format("Result1: ~p~n", [Result1]),
...
我还有一个准备好的语句,我也用它来获取一行(如果存在的话),知道如何访问结果也会很有帮助
【问题讨论】:
【参考方案1】:这在mysql.erl
的source code中有描述:
您的结果将是data, MySQLRes
。
FieldInfo = mysql:get_result_field_info(MysqlRes)
,其中FieldInfo
是Table, Field, Length, Name
元组的列表。
AllRows = mysql:get_result_rows(MysqlRes)
,其中AllRows
是一个列表列表,每个列表代表一行。
【讨论】:
谢谢,作为补充:解析结果的最佳方法是什么?有时它会导致 0 行或有时会有很多行。鉴于此,如果我需要获取电子邮件地址和名称(从用户表中,假设结构是 [id, email, name])。一些示例代码会非常棒。[do_sg(Email, Name) || [_,Email,Name] <- AllRows]
。顺便说一句,如果您不需要 ID,则不应查询它。【参考方案2】:
您应该检查行数, 然后执行:
例如: RowLen = erlang:length(Row), 如果 行列 > 0 -> 成功; 真-> 失败,“行为空” 结束。
【讨论】:
【参考方案3】:在尝试使用Erlang/OTP自带的ODBC模块,遇到问题后,推荐mysql/otp驱动。我在几个小时内用它替换了 ODBC,它工作正常。
他们有很好的documentation,所以我不会在这里添加示例。
【讨论】:
以上是关于二郎 mysql 例子的主要内容,如果未能解决你的问题,请参考以下文章