#1
by
Juliana
Hi! I need to use the participant id_in_session variable in my app to read data from a csv file based on the participant's id_in_session. In my csv file, one column is id_in_session and takes values 1, 2, 3, etc. I want the program to read data from the csv file, corresponding to the participant id_in_session. Does anyone have insights on how to solve this problem? Thank you! def read_worker_database(id_in_session): f = open('_static/csv_files/worker_data.csv', encoding='utf-8-sig') rows = [row for row in csv.DictReader(f)] worker_answers = ["worker_q1", "worker_q2", "worker_q3", "worker_q4"] selected_answer = random.choice(worker_answers) allocated_answer = {selected_answer} for row in rows: if row["id_in_session"] == id_in_session: allocated_answer = row[selected_answer] return selected_answer, allocated_answer class Intro(Page): form_model = 'player' @staticmethod def before_next_page(player: Player, timeout_happened): allocated_answer = read_worker_database(player.participant.id_in_session)
#2
by
Juliana
This code works if I use the participant code, instead of the participant id in session, which suggests the problem comes from using id in session. Thank you!
#3
by
Chris_oTree
Because id_in_session is an integer like 42, whereas the CSV stores everything as a string like "42".