def get(cls, pk):## 根据 关键字 查询这条记录 sql = 'select * from %s where %s=%s' % (cls.__table__, cls.__primary_key__,pk) db = MySQLApp().getInstance() db.query(sql) result = db.fetchOneRow() db.close() return cls(**result) if result else None ## 他的返回值是个什么???? 返回的是一个类带有及个参数
def save(self): fields = [] params = [] ##参考 注册 处理 程序 newUser for k, v in self.__mappings__.iteritems(): if v.canset == False or getattr( self, k, None) == None: ##如果不能被赋值,或则在表中没有这个字段,类中没有这个属性 continue fields.append(v.name) ##意思是:为属性集合增加元素,增加的元素是v.name,v=values值 vu = getattr(self, k, None) if isinstance(vu, unicode): vu = vu.encode('utf-8') if isinstance(vu, str) == False: vu = str(vu) params.append("'" + vu + "'") ## 意思是:为参数集合添加元素, 增加的元素是 vu sql = 'insert into %s (%s) values (%s)' % ( self.__table__, ','.join(fields), ','.join(params)) print('SQL: %s' % sql) print('ARGS: %s' % str(params)) db = MySQLApp().getInstance() pk = db.insert(sql) db.close() print(pk) return pk ##返回一个主键,也就是一个数字
def delete(self,pk): sql = 'delete from %s where %s=%s' % (self.__table__, self.__primary_key__,pk) db = MySQLApp().getInstance() result = db.update(sql) ##删除操作也是更新 主要是游标 _cur db.close() print(result) return result
def initDB(self, tablename, cls): db = MySQLApp().getInstance() sql = 'select * from ' + tablename db.query(sql) result = db.fetchAllRows() #对行进行循环 for row in result: md = cls(**row) self._m_cache[md.id] = md self._m_cacheKeys.append(md.id) print(md) db.close()
def update(self,pk,**kwargs): params = [] for k, v in self.__mappings__.iteritems(): #做一次属性校验,将不可更改的剔除 if v.canset == False: if v.name in kwargs: del kwargs[v.name] for k, v in kwargs.iteritems(): if isinstance(v,unicode): ##判断是否已经编码,如果没有就utf-8编码 v = v.encode('utf-8') if isinstance(v,str) == False:## value的值是否是 ‘字符串’ 如果不是,变成字符串 v = str(v) params.append(k + '=' + "'" + v + "'")##;paramers是一个列表 sql = 'update %s set %s where %s=%s' % (self.__table__, ','.join(params),self.__primary_key__,pk) print('SQL: %s' % sql) db = MySQLApp().getInstance() result = db.update(sql) db.close() print(result) return result