diff options
author | Zachary Sloan | 2012-11-30 18:27:59 -0600 |
---|---|---|
committer | Zachary Sloan | 2012-11-30 18:27:59 -0600 |
commit | 21253f4424fbcdf76212a55011e657ebeb87da82 (patch) | |
tree | 4f7cfd73e16056322a0976511c268ac0b97e8d6c /wqflask/base | |
parent | 43f69f26507d934a15d8e8d20f0ac3023fdb7691 (diff) | |
download | genenetwork2-21253f4424fbcdf76212a55011e657ebeb87da82.tar.gz |
Added example of escaping strings now that trasitioning to simple SQLAlchemy
Diffstat (limited to 'wqflask/base')
-rwxr-xr-x | wqflask/base/data_set.py | 88 |
1 files changed, 44 insertions, 44 deletions
diff --git a/wqflask/base/data_set.py b/wqflask/base/data_set.py index 015b2623..34e5eaa1 100755 --- a/wqflask/base/data_set.py +++ b/wqflask/base/data_set.py @@ -28,6 +28,7 @@ from htmlgen import HTMLgen2 as HT import webqtlConfig +from MySQLdb import escape_string as escape from pprint import pformat as pf # Used by create_database to instantiate objects @@ -36,22 +37,22 @@ DS_NAME_MAP = {} def create_dataset(dataset_name): #cursor = db_conn.cursor() print("dataset_name:", dataset_name) - + dataset_type = g.db.execute(""" SELECT DBType.Name FROM DBList, DBType WHERE DBList.Name = %s and DBType.Id = DBList.DBTypeId """, (dataset_name)).fetchone().Name - + #dataset_type = cursor.fetchone()[0] print("[blubber] dataset_type:", pf(dataset_type)) - + dataset_ob = DS_NAME_MAP[dataset_type] #dataset_class = getattr(data_set, dataset_ob) print("dataset_ob:", dataset_ob) print("DS_NAME_MAP:", pf(DS_NAME_MAP)) - + dataset_class = globals()[dataset_ob] return dataset_class(dataset_name) @@ -75,12 +76,12 @@ class DataSet(object): #if self.cursor and self.id == 0: self.setup() - + self.check_confidentiality() - + self.retrieve_name() self.get_group() - + # Delete this eventually @property @@ -101,9 +102,9 @@ class DataSet(object): """ If the data set name parameter is not found in the 'Name' field of the data set table, check if it is actually the FullName or ShortName instead. - + This is not meant to retrieve the data set info if no name at all is passed. - + """ query_args = tuple(self.db_conn.escape_string(x) for x in ( @@ -113,7 +114,7 @@ class DataSet(object): self.name, self.name)) print("query_args are:", query_args) - + query = ''' SELECT Id, Name, FullName, ShortName @@ -123,7 +124,7 @@ class DataSet(object): public > %s AND (Name = "%s" OR FullName = "%s" OR ShortName = "%s") ''' % (query_args) - + self.cursor.execute(query) self.id, self.name, self.fullname, self.shortname = self.cursor.fetchone() @@ -147,7 +148,7 @@ class PhenotypeDataSet(DataSet): 'Publication.Title', 'Publication.Authors', 'PublishXRef.Id'] - + # Figure out what display_fields is self.display_fields = ['name', 'pubmed_id', @@ -172,10 +173,10 @@ class PhenotypeDataSet(DataSet): 'Authors', 'Year', 'Max LRS', - 'Max LRS Location'] + 'Max LRS Location'] self.type = 'Publish' - + self.query = ''' SELECT InbredSet.Name, InbredSet.Id @@ -185,11 +186,11 @@ class PhenotypeDataSet(DataSet): PublishFreeze.InbredSetId = InbredSet.Id AND PublishFreeze.Name = "%s" ''' % self.db_conn.escape_string(self.name) - + def check_confidentiality(self): # (Urgently?) Need to write this pass - + def get_trait_info(self, trait_list, species = ''): for this_trait in trait_list: if not this_trait.haveinfo: @@ -238,31 +239,31 @@ class PhenotypeDataSet(DataSet): this_trait.LRS_score_repr = LRS_score_repr = '%3.1f' % this_trait.lrs this_trait.LRS_score_value = LRS_score_value = this_trait.lrs - this_trait.LRS_location_repr = LRS_location_repr = 'Chr %s: %.4f Mb' % (LRS_Chr, float(LRS_Mb) ) - + this_trait.LRS_location_repr = LRS_location_repr = 'Chr %s: %.4f Mb' % (LRS_Chr, float(LRS_Mb) ) + class GenotypeDataSet(DataSet): DS_NAME_MAP['Geno'] = 'GenotypeDataSet' - + def setup(self): # Fields in the database table self.search_fields = ['Name', 'Chr'] - + # Find out what display_fields is self.display_fields = ['name', 'chr', 'mb', 'source2', 'sequence'] - + # Fields displayed in the search results table header self.header_fields = ['', 'ID', - 'Location'] - + 'Location'] + # Todo: Obsolete or rename this field self.type = 'Geno' - + self.query = ''' SELECT InbredSet.Name, InbredSet.Id @@ -272,10 +273,10 @@ class GenotypeDataSet(DataSet): GenoFreeze.InbredSetId = InbredSet.Id AND GenoFreeze.Name = "%s" ''' % self.db_conn.escape_string(self.name) - + def check_confidentiality(self): return geno_mrna_confidentiality(self) - + def get_trait_info(self, trait_list, species=None): for this_trait in trait_list: if not this_trait.haveinfo: @@ -295,16 +296,16 @@ class GenotypeDataSet(DataSet): trait_location_value = ord(str(this_trait.chr).upper()[0])*1000 + this_trait.mb this_trait.location_repr = 'Chr%s: %.4f' % (this_trait.chr, float(this_trait.mb) ) - this_trait.location_value = trait_location_value - - + this_trait.location_value = trait_location_value + + class MrnaAssayDataSet(DataSet): ''' An mRNA Assay is a quantitative assessment (assay) associated with an mRNA trait - + This used to be called ProbeSet, but that term only refers specifically to the Affymetrix platform and is far too specific. - + ''' DS_NAME_MAP['ProbeSet'] = 'MrnaAssayDataSet' @@ -346,7 +347,7 @@ class MrnaAssayDataSet(DataSet): 'Location', 'Mean Expr', 'Max LRS', - 'Max LRS Location'] + 'Max LRS Location'] # Todo: Obsolete or rename this field self.type = 'ProbeSet' @@ -360,12 +361,12 @@ class MrnaAssayDataSet(DataSet): ProbeFreeze.InbredSetId = InbredSet.Id AND ProbeFreeze.Id = ProbeSetFreeze.ProbeFreezeId AND ProbeSetFreeze.Name = "%s" - ''' % g.db.escape_string(self.name) + ''' % escape(self.name) def check_confidentiality(self): return geno_mrna_confidentiality(self) - + def get_trait_info(self, trait_list=None, species=''): # Note: setting trait_list to [] is probably not a great idea. @@ -428,7 +429,7 @@ class MrnaAssayDataSet(DataSet): self.db_conn.escape_string(this_trait.name))) print("query is:", pf(query)) - + self.cursor.execute(query) result = self.cursor.fetchone() @@ -475,30 +476,30 @@ class MrnaAssayDataSet(DataSet): this_trait.LRS_score_repr = LRS_score_repr = '%3.1f' % this_trait.lrs this_trait.LRS_score_value = LRS_score_value = this_trait.lrs - this_trait.LRS_location_repr = LRS_location_repr = 'Chr %s: %.4f Mb' % (LRS_Chr, float(LRS_Mb) ) + this_trait.LRS_location_repr = LRS_location_repr = 'Chr %s: %.4f Mb' % (LRS_Chr, float(LRS_Mb) ) class TempDataSet(DataSet): '''Temporary user-generated data set''' - + def setup(self): self.search_fields = ['name', 'description'] - + self.display_fields = ['name', 'description'] - + self.header_fields = ['Name', 'Description'] - + self.type = 'Temp' - + # Need to double check later how these are used self.id = 1 self.fullname = 'Temporary Storage' self.shortname = 'Temp' - - + + def geno_mrna_confidentiality(ob): dataset_table = ob.type + "Freeze" print("dataset_table [%s]: %s" % (type(dataset_table), dataset_table)) @@ -517,4 +518,3 @@ def geno_mrna_confidentiality(ob): if confidential: # Allow confidential data later NoConfindetialDataForYouTodaySorry -
\ No newline at end of file |