在我们的一个erlang项目中,我们使用mysql otp从mysql数据库加载数据,如下所示-
{ok, Columns, Rows} = mysql:query(ConnectionPid, <<"SELECT * FROM credentials WHERE username = ?">>, [Username])
现在 Columns
是由所有列名和 Rows
是记录列表。
例如。
Columns = [<<"id">>, <<"username">>, <<"password">>, <<"is_active">>]
Rows = [[1,"test_user_1", "password", 'Y'], [2, "test_user_2", "password", 'Y']]
现在我们要在加载时将mysql记录缓存到ets表中。所以我们需要从上面两个列表中创建记录。
例如,我们有以下声明
-record(credentials, {id, username, password, is_active}).
那么如何创建 credentials
从以上两个列表中记录 Columns
以及 Rows
. 你知道吗?
编辑
我们不能使用 list_to_tuple
函数,因为在 Rows
列表比 credentials
1条答案
按热度按时间thigvfpy1#
如果你的数据
Rows
是一致的[Id,Username,Password,IsActive|_]
可以总是被期望是有序的和其他额外的价值观将尾随他们,你将不需要Columns
正如@7stud在帖子评论中提到的。下面是我如何理解列表:
这个
_
意味着我们忽略了任何不适合的额外值credentials
的形状。