示例#1
0
 def commit(self):
     global _db_ctx
     log.info('commit transaction...')
     try:
         _db_ctx.connection.commit()
         log.info('commit ok.')
     except:
         log.warning('commit failed. try rollback...')
         _db_ctx.connection.rollback()
         log.warning('rollback ok.')
         raise
示例#2
0
 def commit(self):
     global _db_ctx
     log.info('commit transaction...')
     try:
         _db_ctx.connection.commit()
         log.info('commit ok.')
     except:
         log.warning('commit failed. try rollback...')
         _db_ctx.connection.rollback()
         log.warning('rollback ok.')
         raise
示例#3
0
def create_engine(user, password, database, host='127.0.0.1', port=3306, **kwargs):
    global engine
    if engine is not None:
        log.warning('Engine is already initialized.')
        return False
    params = dict(user=user, password=password, database=database, host=host, port=port)
    defaults = dict(use_unicode=True, charset='utf8', autocommit=False)
    for k, v in defaults.iteritems():
        params[k] = kwargs.pop(k, v)
    params.update(kwargs)
    engine = _Engine(lambda: pymysql.connect(**params))
    return True
示例#4
0
def create_engine(user,
                  password,
                  database,
                  host='127.0.0.1',
                  port=3306,
                  **kwargs):
    global engine
    if engine is not None:
        log.warning('Engine is already initialized.')
        return False
    params = dict(user=user,
                  password=password,
                  database=database,
                  host=host,
                  port=port)
    defaults = dict(use_unicode=True, charset='utf8', autocommit=False)
    for k, v in defaults.iteritems():
        params[k] = kwargs.pop(k, v)
    params.update(kwargs)
    engine = _Engine(lambda: pymysql.connect(**params))
    return True
示例#5
0
    def __new__(cls, name, bases, attrs):
        if name == 'Model':
            return type.__new__(cls, name, bases, attrs)
        if not hasattr(cls, 'subclasses'):
            cls.subclasses = {}
        if name not in cls.subclasses:
            cls.subclasses[name] = name
        else:
            log.warning('Redefine class: %s' % name)

        log.info('Scan ORMapping %s...' % name)
        mappings = dict()
        primary_key = None
        for k, v in attrs.iteritems():
            if isinstance(v, Field):
                if not v.name:
                    v.name = k
                log.info('Found mapping: %s => %s' % (k, v))

                if v.primary_key:
                    if primary_key:
                        raise TypeError(
                            'Cannot define more than 1 primary key in class: %s'
                            % name)
                    if v.writable:
                        log.warning(
                            'NOTE: change primary key to non-writable.')
                        v.writable = False
                    if v.nullable:
                        log.warning(
                            'NOTE: change primary key to non-nullable.')
                        v.nullable = False
                    primary_key = v
                mappings[k] = v

        # check exist of primary key:
        if not primary_key:
            raise TypeError('Primary key not defined in class: %s' % name)
        for k in mappings.iterkeys():
            attrs.pop(k)
        if '__table__' not in attrs:
            attrs['__table__'] = name.lower()
        attrs['__mappings__'] = mappings
        attrs['__primary_key__'] = primary_key
        attrs['__sql__'] = lambda self: _gen_sql(attrs['__table__'], mappings)
        for trigger in _triggers:
            if trigger not in attrs:
                attrs[trigger] = None
        return type.__new__(cls, name, bases, attrs)
示例#6
0
    def __new__(cls, name, bases, attrs):
        if name == 'Model':
            return type.__new__(cls, name, bases, attrs)
        if not hasattr(cls, 'subclasses'):
            cls.subclasses = {}
        if name not in cls.subclasses:
            cls.subclasses[name] = name
        else:
            log.warning('Redefine class: %s' % name)

        log.info('Scan ORMapping %s...' % name)
        mappings = dict()
        primary_key = None
        for k, v in attrs.iteritems():
            if isinstance(v, Field):
                if not v.name:
                    v.name = k
                log.info('Found mapping: %s => %s' % (k, v))

                if v.primary_key:
                    if primary_key:
                        raise TypeError('Cannot define more than 1 primary key in class: %s' % name)
                    if v.writable:
                        log.warning('NOTE: change primary key to non-writable.')
                        v.writable = False
                    if v.nullable:
                        log.warning('NOTE: change primary key to non-nullable.')
                        v.nullable = False
                    primary_key = v
                mappings[k] = v

        # check exist of primary key:
        if not primary_key:
            raise TypeError('Primary key not defined in class: %s' % name)
        for k in mappings.iterkeys():
            attrs.pop(k)
        if '__table__' not in attrs:
            attrs['__table__'] = name.lower()
        attrs['__mappings__'] = mappings
        attrs['__primary_key__'] = primary_key
        attrs['__sql__'] = lambda self: _gen_sql(attrs['__table__'], mappings)
        for trigger in _triggers:
            if trigger not in attrs:
                attrs[trigger] = None
        return type.__new__(cls, name, bases, attrs)
示例#7
0
def profiling(start, sql=''):
    t = time.time() - start
    if t > 0.1:
        log.warning('[PROFILING] [DB] %s: %s', t, sql)
    else:
        log.info('[PROFILING] [DB] %s: %s', t, sql)
示例#8
0
 def rollback(self):
     global _db_ctx
     log.warning('rollback transaction...')
     _db_ctx.connection.rollback()
     log.info('rollback ok.')
示例#9
0
def profiling(start, sql=''):
    t = time.time() - start
    if t > 0.1:
        log.warning('[PROFILING] [DB] %s: %s', t, sql)
    else:
        log.info('[PROFILING] [DB] %s: %s', t, sql)
示例#10
0
 def rollback(self):
     global _db_ctx
     log.warning('rollback transaction...')
     _db_ctx.connection.rollback()
     log.info('rollback ok.')