| 660 | |
| 661 | # Sql query |
| 662 | def actionDbQuery(self, to, query, params=None, wait_for=None): |
| 663 | if config.debug or config.verbose: |
| 664 | s = time.time() |
| 665 | rows = [] |
| 666 | try: |
| 667 | res = self.site.storage.query(query, params) |
| 668 | except Exception as err: # Response the error to client |
| 669 | self.log.error("DbQuery error: %s" % err) |
| 670 | return self.response(to, {"error": Debug.formatExceptionMessage(err)}) |
| 671 | # Convert result to dict |
| 672 | for row in res: |
| 673 | rows.append(dict(row)) |
| 674 | if config.verbose and time.time() - s > 0.1: # Log slow query |
| 675 | self.log.debug("Slow query: %s (%.3fs)" % (query, time.time() - s)) |
| 676 | return self.response(to, rows) |
| 677 | |
| 678 | # Return file content |
| 679 | @flag.async_run |