def _make_query(self): low = _makesafe(self.low) high = _makesafe(self.high) clause = "parent.{col} BETWEEN {low} AND {high}".format( col=self.col, low=low, high=high) return """ SELECT * FROM ({parent}) AS parent WHERE {clause} """.format(parent=self.parent.get_query(), clause=clause)
def _make_query(self): try: assert not isinstance(self.subsetby, str) ss = tuple(self.subsetby) except (TypeError, AssertionError): ss = (self.subsetby, ) finally: clause = "parent.{col} IN {subset}".format( col=self.col, subset=_makesafe(ss)) return """ SELECT * FROM ({parent}) AS parent WHERE {clause} """.format(parent=self.parent.get_query(), clause=clause)
def test_convert_list_to_str(): """ Test that makesafe returns a string when passed a list """ assert _makesafe(["foo", "bar"]) == "ARRAY['foo','bar']"
def test_convert_number_to_str(): """ Test that makesafe returns a string when passed a integer or float """ assert _makesafe(123) == "123" assert _makesafe(float("Inf")) == "'Infinity'::float"