def format_value(column, value): if value is None or (type(value) is float and math.isnan(value)): return 'null' if type(value) is list: return '({0})'.format( ', '.join([format_value(column, v) for v in value])) if type(value) in [datetime.datetime, datetime.date, datetime.time]: return "'%s'" % value if type(value) is buffer: return u"'[BLOB]'" if column is None: try: return '%d' % int(value) except ValueError: return u"'%s'" % value if (isinstance(column.type, Boolean) and (type(value) is bool or value in ['true', 'false']) or type(value) is bool): return '%s' % str(value).lower() if isinstance(column.type, Float) or type(value) is float: try: return '%f' % float(value) except ValueError: pass if isinstance(column.type, Integer) or type(value) in (int, Decimal): try: return '%d' % int(value) except ValueError: pass return u"'%s'" % escape_statement(value).replace("'", "''")
def execute(self, query): cur = self.cursor() if not cur: raise Exception("Database is not connected") timer = LogTimer(logger, "Execution", "Executing:\n%s", query) try: return cur.execute(escape_statement(query)) finally: timer.stop()