diff options
Diffstat (limited to 'uploader/samples/models.py')
-rw-r--r-- | uploader/samples/models.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/uploader/samples/models.py b/uploader/samples/models.py new file mode 100644 index 0000000..15e509e --- /dev/null +++ b/uploader/samples/models.py @@ -0,0 +1,19 @@ +"""Functions for handling samples.""" +import MySQLdb as mdb +from MySQLdb.cursors import DictCursor + +def samples_by_species_and_population( + conn: mdb.Connection, + species_id: int, + population_id: int +) -> tuple[dict, ...]: + """Fetch the samples by their species and population.""" + with conn.cursor(cursorclass=DictCursor) as cursor: + cursor.execute( + "SELECT iset.InbredSetId, s.* FROM InbredSet AS iset " + "INNER JOIN StrainXRef AS sxr ON iset.InbredSetId=sxr.InbredSetId " + "INNER JOIN Strain AS s ON sxr.StrainId=s.Id " + "WHERE s.SpeciesId=%(species_id)s " + "AND iset.InbredSetId=%(population_id)s", + {"species_id": species_id, "population_id": population_id}) + return tuple(cursor.fetchall()) |