[docs]classStringify:""" This class contains functions to transform python objects into formatted string params so they can be used to query Data Solutions' databases without needing to be transformed manually by the user. """
[docs]deflists(self,data:Union[Series,list])->str:""" Convert a list or pandas Series to a formatted string param. :param data: The list to be converted. :type data: Union[Series, list] :return: The converted list. :rtype: str """ifisinstance(data,Series):data=data.tolist()return"("+", ".join(["'"+str(x)+"'"forxindata])+")"
[docs]defcolumns(self,columns:list)->str:""" Convert a column select list to a formatted string param. :param columns: The column select list object to be converted. :type columns: list :return: The converted column select list. :rtype: str """type=get_list_type(columns)iftype!=str:raiseBadRequest("Columns must be a string list")return", ".join(columns)
[docs]defdatetimes(self,_datetime:datetime.datetime)->str:""" Convert a datetime object to a formatted string param. :param list: The datetime object to be converted. :type list: list :return: The converted datetime object. :rtype: str """ifnotisinstance(_datetime,datetime.datetime):raiseBadRequest("Incorrect type. Supply a datetime.datetime object.")returnf"'{_datetime.strftime('%Y-%m-%dT%H:%M:%SZ')}'"
[docs]defdataframes(self,df:DataFrame)->str:""" Convert a pandas DataFrame to a SQL CTE :param df: The DataFrame to be converted. :type df: DataFrame :return: The converted DataFrame. :rtype: str """tuples=list(df.itertuples(index=False,name=None))values="".join([str(t)fortintuples])returnvalues