aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBonfaceKilz2022-03-01 16:31:07 +0300
committerBonfaceKilz2022-03-12 15:33:09 +0300
commit4b156c19afbe91f9feb5a65e263b771fbf6502cc (patch)
treed765c01e1e6ca9b629a455fd77766b5a4e75e10d
parentb6ecd0888ccf51b1dd2bfcbbbc4e03b1c5a92699 (diff)
downloadgenenetwork3-4b156c19afbe91f9feb5a65e263b771fbf6502cc.tar.gz
Fetch id's separately for the insertion edge-case
* gn3/db/sample_data (get_sample_data_ids): Add an extra condition that caters for inserts: during inserts, joins won't work when fetching the strain_id, publishdata_id, and strain_name. In this case, just create 2 separate queries to do that work.
-rw-r--r--gn3/db/sample_data.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/gn3/db/sample_data.py b/gn3/db/sample_data.py
index a410978..e3e1676 100644
--- a/gn3/db/sample_data.py
+++ b/gn3/db/sample_data.py
@@ -68,6 +68,15 @@ def get_sample_data_ids(conn: Any, publishxref_id: int,
(publishxref_id, phenotype_id, strain_name))
if _result := cursor.fetchone():
strain_id, publishdata_id, inbredset_id = _result
+ if not all([strain_id, publishdata_id, inbredset_id]):
+ # Applies for data to be inserted:
+ cursor.execute("SELECT DataId, InbredSetId FROM PublishXRef "
+ "WHERE Id = %s AND PhenotypeId = %s",
+ (publishxref_id, phenotype_id))
+ publishdata_id, inbredset_id = cursor.fetchone()
+ cursor.execute("SELECT Id FROM Strain WHERE Name = %s",
+ (strain_name,))
+ strain_id = cursor.fetchone()
return (strain_id, publishdata_id, inbredset_id)