Creating erlang record from two separate lists
up vote
0
down vote
favorite
In one of our erlang project we are loading data from mysql database using mysql-otp as below -
ok, Columns, Rows = mysql:query(ConnectionPid, <<"SELECT * FROM credentials WHERE username = ?">>, [Username])
Now Columns
is a list of binaries consisting all column names and Rows
are the list of list of records.
For eg.
Columns = [<<"id">>, <<"username">>, <<"password">>, <<"is_active">>]
Rows = [[1,"test_user_1", "password", 'Y'], [2, "test_user_2", "password", 'Y']]
Now we would like to cache the mysql records into ets tables on load. So we will need to create the records from the above two lists.
For eg. we have the below record declaration
-record(credentials, id, username, password, is_active).
So how to create the list of credentials
record from the above two list Columns
and Rows
. Any idea?
Edits
we can't use list_to_tuple
function as there might be variable number of elements in the Rows
list than credentials
mysql erlang
add a comment |
up vote
0
down vote
favorite
In one of our erlang project we are loading data from mysql database using mysql-otp as below -
ok, Columns, Rows = mysql:query(ConnectionPid, <<"SELECT * FROM credentials WHERE username = ?">>, [Username])
Now Columns
is a list of binaries consisting all column names and Rows
are the list of list of records.
For eg.
Columns = [<<"id">>, <<"username">>, <<"password">>, <<"is_active">>]
Rows = [[1,"test_user_1", "password", 'Y'], [2, "test_user_2", "password", 'Y']]
Now we would like to cache the mysql records into ets tables on load. So we will need to create the records from the above two lists.
For eg. we have the below record declaration
-record(credentials, id, username, password, is_active).
So how to create the list of credentials
record from the above two list Columns
and Rows
. Any idea?
Edits
we can't use list_to_tuple
function as there might be variable number of elements in the Rows
list than credentials
mysql erlang
You can not make records in runtime, they are created in compile time. Use maps instead.
– Pouriya
Nov 11 at 16:00
1
If you have the record definitioncredentials
, then the Columns list is irrelevant, so your question is very poorly asked.
– 7stud
Nov 12 at 1:18
@7stud I hope u didn't get my question. Anyways I have solved it in my way and it's working fine.
– Neel
Nov 12 at 3:24
1
@Neel: If you solved it, please post the answer here for others to know.
– Brujo Benavides
Nov 12 at 11:27
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
In one of our erlang project we are loading data from mysql database using mysql-otp as below -
ok, Columns, Rows = mysql:query(ConnectionPid, <<"SELECT * FROM credentials WHERE username = ?">>, [Username])
Now Columns
is a list of binaries consisting all column names and Rows
are the list of list of records.
For eg.
Columns = [<<"id">>, <<"username">>, <<"password">>, <<"is_active">>]
Rows = [[1,"test_user_1", "password", 'Y'], [2, "test_user_2", "password", 'Y']]
Now we would like to cache the mysql records into ets tables on load. So we will need to create the records from the above two lists.
For eg. we have the below record declaration
-record(credentials, id, username, password, is_active).
So how to create the list of credentials
record from the above two list Columns
and Rows
. Any idea?
Edits
we can't use list_to_tuple
function as there might be variable number of elements in the Rows
list than credentials
mysql erlang
In one of our erlang project we are loading data from mysql database using mysql-otp as below -
ok, Columns, Rows = mysql:query(ConnectionPid, <<"SELECT * FROM credentials WHERE username = ?">>, [Username])
Now Columns
is a list of binaries consisting all column names and Rows
are the list of list of records.
For eg.
Columns = [<<"id">>, <<"username">>, <<"password">>, <<"is_active">>]
Rows = [[1,"test_user_1", "password", 'Y'], [2, "test_user_2", "password", 'Y']]
Now we would like to cache the mysql records into ets tables on load. So we will need to create the records from the above two lists.
For eg. we have the below record declaration
-record(credentials, id, username, password, is_active).
So how to create the list of credentials
record from the above two list Columns
and Rows
. Any idea?
Edits
we can't use list_to_tuple
function as there might be variable number of elements in the Rows
list than credentials
mysql erlang
mysql erlang
edited Nov 11 at 14:24
asked Nov 11 at 14:02
Neel
269616
269616
You can not make records in runtime, they are created in compile time. Use maps instead.
– Pouriya
Nov 11 at 16:00
1
If you have the record definitioncredentials
, then the Columns list is irrelevant, so your question is very poorly asked.
– 7stud
Nov 12 at 1:18
@7stud I hope u didn't get my question. Anyways I have solved it in my way and it's working fine.
– Neel
Nov 12 at 3:24
1
@Neel: If you solved it, please post the answer here for others to know.
– Brujo Benavides
Nov 12 at 11:27
add a comment |
You can not make records in runtime, they are created in compile time. Use maps instead.
– Pouriya
Nov 11 at 16:00
1
If you have the record definitioncredentials
, then the Columns list is irrelevant, so your question is very poorly asked.
– 7stud
Nov 12 at 1:18
@7stud I hope u didn't get my question. Anyways I have solved it in my way and it's working fine.
– Neel
Nov 12 at 3:24
1
@Neel: If you solved it, please post the answer here for others to know.
– Brujo Benavides
Nov 12 at 11:27
You can not make records in runtime, they are created in compile time. Use maps instead.
– Pouriya
Nov 11 at 16:00
You can not make records in runtime, they are created in compile time. Use maps instead.
– Pouriya
Nov 11 at 16:00
1
1
If you have the record definition
credentials
, then the Columns list is irrelevant, so your question is very poorly asked.– 7stud
Nov 12 at 1:18
If you have the record definition
credentials
, then the Columns list is irrelevant, so your question is very poorly asked.– 7stud
Nov 12 at 1:18
@7stud I hope u didn't get my question. Anyways I have solved it in my way and it's working fine.
– Neel
Nov 12 at 3:24
@7stud I hope u didn't get my question. Anyways I have solved it in my way and it's working fine.
– Neel
Nov 12 at 3:24
1
1
@Neel: If you solved it, please post the answer here for others to know.
– Brujo Benavides
Nov 12 at 11:27
@Neel: If you solved it, please post the answer here for others to know.
– Brujo Benavides
Nov 12 at 11:27
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
If your data in Rows
is consistent in the way that the values in [Id,Username,Password,IsActive|_]
can always be expected to be orderly and other extra values will be tailing them, you won't need Columns
as mentioned by @7stud in the post's comments.
Here is how I'd do with list comprehension:
Creds = [ #credentials
id=Id,
username=Usr,
password=Pw,
is_active=Act || [Id,Usr,Pw,Act|_] <- Rows ]
The _
means that we ignore whatever extra values there might be that won't fit into credentials
's shape.
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
If your data in Rows
is consistent in the way that the values in [Id,Username,Password,IsActive|_]
can always be expected to be orderly and other extra values will be tailing them, you won't need Columns
as mentioned by @7stud in the post's comments.
Here is how I'd do with list comprehension:
Creds = [ #credentials
id=Id,
username=Usr,
password=Pw,
is_active=Act || [Id,Usr,Pw,Act|_] <- Rows ]
The _
means that we ignore whatever extra values there might be that won't fit into credentials
's shape.
add a comment |
up vote
0
down vote
If your data in Rows
is consistent in the way that the values in [Id,Username,Password,IsActive|_]
can always be expected to be orderly and other extra values will be tailing them, you won't need Columns
as mentioned by @7stud in the post's comments.
Here is how I'd do with list comprehension:
Creds = [ #credentials
id=Id,
username=Usr,
password=Pw,
is_active=Act || [Id,Usr,Pw,Act|_] <- Rows ]
The _
means that we ignore whatever extra values there might be that won't fit into credentials
's shape.
add a comment |
up vote
0
down vote
up vote
0
down vote
If your data in Rows
is consistent in the way that the values in [Id,Username,Password,IsActive|_]
can always be expected to be orderly and other extra values will be tailing them, you won't need Columns
as mentioned by @7stud in the post's comments.
Here is how I'd do with list comprehension:
Creds = [ #credentials
id=Id,
username=Usr,
password=Pw,
is_active=Act || [Id,Usr,Pw,Act|_] <- Rows ]
The _
means that we ignore whatever extra values there might be that won't fit into credentials
's shape.
If your data in Rows
is consistent in the way that the values in [Id,Username,Password,IsActive|_]
can always be expected to be orderly and other extra values will be tailing them, you won't need Columns
as mentioned by @7stud in the post's comments.
Here is how I'd do with list comprehension:
Creds = [ #credentials
id=Id,
username=Usr,
password=Pw,
is_active=Act || [Id,Usr,Pw,Act|_] <- Rows ]
The _
means that we ignore whatever extra values there might be that won't fit into credentials
's shape.
edited Nov 14 at 21:39
answered Nov 14 at 21:22
Pie 'Oh' Pah
3,4041437
3,4041437
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53249506%2fcreating-erlang-record-from-two-separate-lists%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
You can not make records in runtime, they are created in compile time. Use maps instead.
– Pouriya
Nov 11 at 16:00
1
If you have the record definition
credentials
, then the Columns list is irrelevant, so your question is very poorly asked.– 7stud
Nov 12 at 1:18
@7stud I hope u didn't get my question. Anyways I have solved it in my way and it's working fine.
– Neel
Nov 12 at 3:24
1
@Neel: If you solved it, please post the answer here for others to know.
– Brujo Benavides
Nov 12 at 11:27