Code Duplication    Length = 28-28 lines in 2 locations

pystratum_pgsql/PgSqlDataLayer.py 2 locations

@@ 310-337 (lines=28) @@
307
        return ret
308
309
    # ------------------------------------------------------------------------------------------------------------------
310
    def execute_sp_singleton1(self, sql: str, *params) -> object:
311
        """
312
        Executes a stored procedure that selects 1 row with 1 column. Returns the value of the selected column.
313
314
        :param str sql: The SQL call the the stored procedure.
315
        :param iterable params: The arguments for the stored procedure.
316
317
        :rtype: object
318
        """
319
        cursor = self._connection.cursor()
320
        if params:
321
            cursor.execute(sql, params)
322
        else:
323
            cursor.execute(sql)
324
        portal = self._connection.cursor(cursor.fetchone()[0])
325
        rows = portal.fetchall()
326
        row_count = len(rows)
327
        if row_count == 1:
328
            ret = rows[0][0]
329
        else:
330
            ret = None  # Keep our IDE happy.
331
        portal.close()
332
        cursor.close()
333
334
        if len(rows) != 1:
335
            raise ResultException('1', row_count, sql)
336
337
        return ret
338
339
    # ------------------------------------------------------------------------------------------------------------------
340
    def execute_sp_table(self, sql: str, *params) -> int:
@@ 253-280 (lines=28) @@
250
        return ret
251
252
    # ------------------------------------------------------------------------------------------------------------------
253
    def execute_sp_singleton0(self, sql: str, *params) -> object:
254
        """
255
        Executes a stored procedure that selects 0 or 1 row with 1 column. Returns the value of selected column or None.
256
257
        :param str sql: The SQL call the the stored procedure.
258
        :param iterable params: The arguments for the stored procedure.
259
260
        :rtype: object
261
        """
262
        cursor = self._connection.cursor()
263
        if params:
264
            cursor.execute(sql, params)
265
        else:
266
            cursor.execute(sql)
267
        portal = self._connection.cursor(cursor.fetchone()[0])
268
        rows = portal.fetchall()
269
        row_count = len(rows)
270
        if row_count == 1:
271
            ret = rows[0][0]
272
        else:
273
            ret = None  # Keep our IDE happy.
274
        portal.close()
275
        cursor.close()
276
277
        if not (row_count == 0 or row_count == 1):
278
            raise ResultException('0 or 1', row_count, sql)
279
280
        return ret
281
282
    # ------------------------------------------------------------------------------------------------------------------
283
    def execute_singleton1(self, sql: str, *params) -> object: