def upsert(self, t: _transaction = None, *update_fields): _valid_fields = self.get_valid_fields(for_save=True) if not update_fields: update_fields = list(_valid_fields.keys()) sql = self.__META__.get_upsert_sql_tpl().format( update_fields=', '.join('{field}=%({field})s'.format(field=field) for field in update_fields)) param = _valid_fields mydb = MyDBApi(config=self._get_db_conf(), t=t) return mydb.insert_one(sql, param)
def create(cls, sql: SQL = None, t: _transaction = None): """ :param sql: :param t: :return: """ cls._check_meta() mydb = MyDBApi(config=cls._get_db_conf(), t=t) return mydb.insert_one(sql.sql)
def update(self, t: _transaction = None, **filters): """ 使用当前对象的值去更新数据库记录 :param t: :param filters: 当filters参数非空,函数表示用当前的值去更新所有符合filter条件的数据 :return: """ if not filters: filters = self.pk_fields sql_obj = self._update_sql sql = sql_obj.sql param = sql_obj.param parsed = parse(**filters) param.update(parsed['param']) sql = sql.format(filter=parsed['filter']) mydb = MyDBApi(config=self._get_db_conf(), t=t) return mydb.insert_one(sql, param)
def insert(self, t: _transaction = None): mydb = MyDBApi(config=self._get_db_conf(), t=t) sql_obj = self._insert_sql return mydb.insert_one(sql_obj.sql, param=sql_obj.param)