We just parse MySQL binary logs as they only contain modification queries. You can dump the real SQL query out petty easily. I can send you the base of our dump script if you want. On Jan 15, 2013 10:26 AM, "Matteo Suppo" <matteo.su...@gmail.com> wrote:
> Good question. We decided not to do it at database level because we didn't > want to write every select on the file, but only the update/insert/delete. > > Probably it was better that way, though, and clean the file later. > > Matteo Suppo - Social Media Badass > > "C'è sempre un altro modo" > "Ho l'80% di probabilità di fare qualsiasi cosa" > > > 2013/1/15 Addy Yeow <ayeo...@gmail.com> > >> Why not do this at database level? >> e.g. using http://dev.mysql.com/doc/refman/5.1/en/query-log.html >> >> On Tue, Jan 15, 2013 at 9:35 PM, Matteo Suppo <matteo.su...@gmail.com> >> wrote: >> > Sometimes people ask for strange features, like "I want to log every >> > database query except select". >> > >> > There will be drawbacks, of course: it will be slower, for example, but >> they >> > won't care. >> > >> > It happened to us, and we had to ship this insanity: >> > >> > import logging >> > from logging.handlers import RotatingFileHandler >> > from django.db.backends import BaseDatabaseWrapper >> > from django.db.models.signals import pre_save, post_save, pre_delete, >> > post_delete >> > from django.dispatch import receiver >> > >> > from datetime import datetime >> > >> > from django.conf import settings >> > >> > def patch_cursor(self): >> > """ Monkey Patch BaseDatabaseWrapper to always use the debug cursor >> """ >> > self.validate_thread_sharing() >> > >> > return self.make_debug_cursor(self._cursor()) >> > BaseDatabaseWrapper.cursor = patch_cursor >> > >> > @receiver(pre_delete) >> > @receiver(pre_save) >> > def member_pre_save(sender, **kwargs): >> > l = logging.getLogger('django.db.backends') >> > l.setLevel(logging.DEBUG) >> > if len(l.handlers) <= 0: >> > handler = RotatingFileHandler(settings.BACKUP_FILENAME, >> > maxBytes=settings.BACKUP_MAXBYTES) >> > l.addHandler(handler) >> > l.debug(datetime.now()) >> > >> > @receiver(post_delete) >> > @receiver(post_save) >> > def member_post_save(sender, **kwargs): >> > l = logging.getLogger('django.db.backends') >> > l.removeHandler(l.handlers[0]) >> > >> > Of course now they told us they want to log the IP of the machine who >> > triggered the query, so we'll have to use a different approach. Sigh. >> > >> > -- >> > You received this message because you are subscribed to the Google >> Groups >> > "Django users" group. >> > To view this discussion on the web visit >> > https://groups.google.com/d/msg/django-users/-/voMGlGJ3UqgJ. >> > To post to this group, send email to django-users@googlegroups.com. >> > To unsubscribe from this group, send email to >> > django-users+unsubscr...@googlegroups.com. >> > For more options, visit this group at >> > http://groups.google.com/group/django-users?hl=en. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To post to this group, send email to django-users@googlegroups.com. >> To unsubscribe from this group, send email to >> django-users+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/django-users?hl=en. >> >> > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To post to this group, send email to django-users@googlegroups.com. > To unsubscribe from this group, send email to > django-users+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/django-users?hl=en. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.