测试类
class TableTest(Base): __tablename__ = ‘table_test‘ id = Column(BIGINT(20),primary_key=True,autoincrement=‘auto‘) name = Column(String(50,‘utf8mb4_unicode_ci‘),nullable=False,unique=True) age=Column(INTEGER(11),nullable=False) height=Column(INTEGER(11),nullable=False)
关键代码:
def GetInsertOrUpdateObj(cls,strFilter,**kw): ‘‘‘ cls: Model 类名 strFilter: filter的参数.eg:"name=‘name-14‘" **kw: 【属性、值】字典,用于构建新实例,或修改存在的记录 ‘‘‘ #print(‘strFilter ; ‘,strFilter) existing = session.query(cls).filter(text(strFilter)).first() if not existing: res=cls() for k,v in kw.items(): if hasattr(res,k): setattr(res,k,v) return res else: res = existing for k,v in kw.items(): if hasattr(res,k): setattr(res,k,v) return res
调用示例:
if __name__==‘__main__‘: session.add(GetInsertOrUpdateObj(TableTest,"name=‘name-14‘",name=‘name-14‘,age=88,height=4321)) session.add(GetInsertOrUpdateObj(TableTest,"name=‘name-114‘",age=33114,height=123.14,name=‘name-114‘)) session.commit() session.close()
原文:https://www.cnblogs.com/xhzxlqt/p/12416377.html