SQL语句ORM

class Model class(type):
    def __new__(cls, name,  s, attrs):
        mappings = dict()
        for k, v in attrs.items():
            if isinstance(v, tuple):
                mappings[k] = v

        for k in mappings.keys():
            attrs.pop(k)

        attrs[\'__mappings__\'] = mappings
        attrs[\'__table__\'] = name
        return type.__new__(cls, name,  s, attrs)


class User( class=Model class):
    uid = (\'uid\', \"int unsigned\")
    name = (\'username\', \"varchar(30)\")
    email = (\'email\', \"varchar(30)\")
    password = (\'password\', \"varchar(30)\")

    def __init__(self, **kwargs):

        for name, value in kwargs.items():
            setattr(self, name, value)

    def save(self):
        fields = []
        args = []
        for k, v in self.__mappings__.items():
            fields.append(v[0])
            args.append(getattr(self, k, None))

        sql = \'insert into %s (%s) values (%s)\' % (self.__table__, \',\'.join(fields), \',\'.join([str(i) for i in args]))
        print(\'SQL: %s\' % sql)


u = User(uid=12345, name=\'Michael\', email=\'test@orm.org\', password=\'my-pwd\')
u.save()
收藏 打印