class print_all_queries: def __init__(self, conn=None): if conn is None: # pragma: no branch conn = connection self.conn = conn def __enter__(self): self.capturer = CaptureQueriesContext(self.conn) self.capturer.__enter__() return self def __exit__(self, a, b, c): self.capturer.__exit__(a, b, c) for q in self.capturer.captured_queries: print(q["sql"])
class print_all_queries(object): def __init__(self, conn=None): if conn is None: self.conn = connection else: self.conn = conn def __enter__(self): self.capturer = CaptureQueriesContext(self.conn) self.capturer.__enter__() return self def __exit__(self, a, b, c): self.capturer.__exit__(a, b, c) for q in self.capturer.captured_queries: print(q['sql'])
class CaptureLastQuery: def __init__(self, conn=None): if conn is None: # pragma: no branch conn = connection self.conn = conn def __enter__(self): self.capturer = CaptureQueriesContext(self.conn) self.capturer.__enter__() return self def __exit__(self, a, b, c): self.capturer.__exit__(a, b, c) @property def query(self): return self.capturer.captured_queries[-1]["sql"]
class CaptureLastQuery(object): def __init__(self, conn=None): if conn is None: self.conn = connection else: self.conn = conn def __enter__(self): self.capturer = CaptureQueriesContext(self.conn) self.capturer.__enter__() return self def __exit__(self, a, b, c): self.capturer.__exit__(a, b, c) @property def query(self): return self.capturer.captured_queries[-1]['sql']
class SphinxModelTestCaseBase(TransactionTestCase): _id = 0 model = models.TestModel def _fixture_teardown(self): # Prevent SHOW FULL TABLES call pass def truncate_model(self): c = connections[settings.SPHINX_DATABASE_NAME].cursor() c.execute("TRUNCATE RTINDEX %s" % self.model._meta.db_table) c.close() def setUp(self): c = connections[settings.SPHINX_DATABASE_NAME] self.no_string_compare = c.mysql_version < (2, 2, 7) self.truncate_model() self.now = datetime.now().replace(microsecond=0) self.defaults = self.get_model_defaults() self.spx_queries = CaptureQueriesContext( connections[settings.SPHINX_DATABASE_NAME]) self.spx_queries.__enter__() self.obj = self.model.objects.create(**self.defaults) def get_model_defaults(self): return { 'id': self.newid(), 'sphinx_field': "hello sphinx field", 'attr_uint': 100500, 'attr_bool': True, 'attr_bigint': 2 ** 33, 'attr_float': 1.2345, 'attr_multi': [1, 2, 3], 'attr_multi_64': [2 ** 33, 2 ** 34], 'attr_timestamp': self.now, 'attr_string': "hello sphinx attr", "attr_json": {"json": "test"}, } @classmethod def newid(cls): cls._id += 1 return cls._id def reload_object(self, obj): return obj._meta.model.objects.get(pk=obj.pk) def assertObjectEqualsToDefaults(self, other, defaults=None): defaults = defaults or self.defaults result = {k: getattr(other, k) for k in defaults.keys() if k != 'sphinx_field'} for k in defaults.keys(): if k == 'sphinx_field': continue self.assertEqual(result[k], defaults[k]) def tearDown(self): self.spx_queries.__exit__(*sys.exc_info()) for query in self.spx_queries.captured_queries: print(query['sql'])