Odyssey
Public Member Functions | Public Attributes | List of all members
ody_migr_benchmarks.BulkInsertionTester Class Reference

Public Member Functions

def __init__ (self, count)
 
def slow_multiple_conns_list (self)
 
def slow_multiple_conns_dict (self)
 
def insert_iterative_single_conn_list (self)
 
def insert_iterative_single_conn_dict (self)
 
def insert_executemany_dict (self)
 
def insert_executemany_list (self)
 
def fast_insert_execute_values_dict (self)
 
def fast_insert_execute_values_list (self)
 
def insert_execute_batch_dict (self)
 
def insert_execute_batch_list (self)
 
def fast_insert_many_mogrify (self)
 
def fast_insert_unnest (self)
 
def run (self)
 

Public Attributes

 data
 
 count
 

Detailed Description

Definition at line 218 of file ody_migr_benchmarks.py.

Member Function Documentation

◆ fast_insert_execute_values_dict()

def ody_migr_benchmarks.BulkInsertionTester.fast_insert_execute_values_dict (   self)
    One connection, one query - multiple values insertions.
    Uses psycopg2.extras.execute_values

Definition at line 311 of file ody_migr_benchmarks.py.

311  def fast_insert_execute_values_dict(self):
312  '''
313  One connection, one query - multiple values insertions.
314  Uses psycopg2.extras.execute_values
315  '''
316  (insert_query,
317  template) = pg_handler.pg_prepare_insert_script_execute_values_dict(
318  TEST_TABLE_NAME_STR, fixture_columns)
319 
320  with connect() as connection:
321  with connection.cursor() as cursor:
322  execute_values(
323  cursor,
324  insert_query.as_string(connection),
325  self.data,
326  template=template.as_string(connection),
327  page_size=self.count
328  )
329 

◆ fast_insert_execute_values_list()

def ody_migr_benchmarks.BulkInsertionTester.fast_insert_execute_values_list (   self)
    One connection, one query - multiple values insertions.
    Uses psycopg2.extras.execute_values

Definition at line 330 of file ody_migr_benchmarks.py.

330  def fast_insert_execute_values_list(self):
331  '''
332  One connection, one query - multiple values insertions.
333  Uses psycopg2.extras.execute_values
334  '''
335  values = []
336  for row in self.data:
337  # still linear, done to match the order of cols and values
338  row_vals = [row[col] for col in fixture_columns]
339  values.append(row_vals)
340 
341  (insert_query,
342  template) = pg_handler.pg_prepare_insert_script_execute_values_list(
343  TEST_TABLE_NAME_STR, fixture_columns)
344 
345  with connect() as connection:
346  with connection.cursor() as cursor:
347  execute_values(cursor,
348  insert_query.as_string(connection),
349  values,
350  template=template.as_string(connection),
351  page_size=self.count
352  )
353 

◆ fast_insert_many_mogrify()

def ody_migr_benchmarks.BulkInsertionTester.fast_insert_many_mogrify (   self)
One connection, one query - multiple values insertions.
Uses cursor.mogrify to validate scripts

Definition at line 394 of file ody_migr_benchmarks.py.

394  def fast_insert_many_mogrify(self):
395  '''
396  One connection, one query - multiple values insertions.
397  Uses cursor.mogrify to validate scripts
398 
399  '''
400  values = []
401  for row in self.data:
402  # still linear, done to match the order of cols and values
403  row_vals = [row[col] for col in fixture_columns]
404  values.append(row_vals)
405 
406  with connect() as connection:
407  with connection.cursor() as cursor:
408  insert_query = pg_prepare_insert_script_cursor_mogrify(
409  TEST_TABLE_NAME_STR, fixture_columns, cursor, values)
410  cursor.execute(insert_query)
411 

◆ fast_insert_unnest()

def ody_migr_benchmarks.BulkInsertionTester.fast_insert_unnest (   self)
One connection, one query - multiple values insertions.
Insertion script incorporate unnest + dictionary keys.

`values` can also be passed as:
    first_name = [r['first_name'] for r in self.data]
    last_name = [r['last_name'] for r in self.data]
    email = [r['email'] for r in self.data]
    gender = [r['gender'] for r in self.data]
    ip_address = [r['ip_address'] for r in self.data]
    ssn = [r['ssn'] for r in self.data]
    company_name = [r['company_name'] for r in self.data]
    race = [r['race'] for r in self.data]
    department = [r['department'] for r in self.data]
    values = locals()

Definition at line 412 of file ody_migr_benchmarks.py.

412  def fast_insert_unnest(self):
413  """
414  One connection, one query - multiple values insertions.
415  Insertion script incorporate unnest + dictionary keys.
416 
417  `values` can also be passed as:
418  first_name = [r['first_name'] for r in self.data]
419  last_name = [r['last_name'] for r in self.data]
420  email = [r['email'] for r in self.data]
421  gender = [r['gender'] for r in self.data]
422  ip_address = [r['ip_address'] for r in self.data]
423  ssn = [r['ssn'] for r in self.data]
424  company_name = [r['company_name'] for r in self.data]
425  race = [r['race'] for r in self.data]
426  department = [r['department'] for r in self.data]
427  values = locals()
428  """
429  insert_sql = pg_handler.pg_prepare_insert_script_unnest(
430  TEST_TABLE_NAME_STR, fixture_columns)
431 
432  values = {}
433  for col in fixture_columns:
434  values[col] = [r[col] for r in self.data]
435 
436  with connect() as connection:
437  with connection.cursor() as cursor:
438  cursor.execute(insert_sql, values)
439 

◆ insert_execute_batch_dict()

def ody_migr_benchmarks.BulkInsertionTester.insert_execute_batch_dict (   self)
    One connection, one query - multiple values insertions.
    Uses psycopg2.extras.execute_batch() - list of dict

Definition at line 354 of file ody_migr_benchmarks.py.

354  def insert_execute_batch_dict(self):
355  '''
356  One connection, one query - multiple values insertions.
357  Uses psycopg2.extras.execute_batch() - list of dict
358  '''
359  # query similar to executemany()
360  insert_query = pg_prepare_insert_script_executemany_dict(
361  TEST_TABLE_NAME_STR, fixture_columns)
362 
363  with connect() as connection:
364  with connection.cursor() as cursor:
365  execute_batch(cursor,
366  insert_query,
367  self.data,
368  page_size=self.count
369  )
370 

◆ insert_execute_batch_list()

def ody_migr_benchmarks.BulkInsertionTester.insert_execute_batch_list (   self)
     One connection, one query - multiple values insertions.
    Uses psycopg2.extras.execute_batch() - list of list

Definition at line 371 of file ody_migr_benchmarks.py.

371  def insert_execute_batch_list(self):
372  '''
373  One connection, one query - multiple values insertions.
374  Uses psycopg2.extras.execute_batch() - list of list
375 
376  '''
377  values = []
378  for row in self.data:
379  # still linear, done to match the order of cols and values
380  row_vals = [row[col] for col in fixture_columns]
381  values.append(row_vals)
382 
383  with connect() as connection:
384  with connection.cursor() as cursor:
385  # query similar to executemany()
386  insert_query = pg_prepare_insert_script_executemany_list(
387  TEST_TABLE_NAME_STR, fixture_columns)
388  execute_batch(cursor,
389  insert_query,
390  values,
391  page_size=self.count
392  )
393 

◆ insert_executemany_dict()

def ody_migr_benchmarks.BulkInsertionTester.insert_executemany_dict (   self)
    One connection multiple queries.
    Uses cursor.executemany() - list of values (dictionary)

Definition at line 281 of file ody_migr_benchmarks.py.

281  def insert_executemany_dict(self):
282  '''
283  One connection multiple queries.
284  Uses cursor.executemany() - list of values (dictionary)
285 
286  '''
287  with connect() as connection:
288  with connection.cursor() as cursor:
289  executemany_script = pg_prepare_insert_script_executemany_dict(
290  TEST_TABLE_NAME_STR, fixture_columns)
291  cursor.executemany(executemany_script, self.data)
292 

◆ insert_executemany_list()

def ody_migr_benchmarks.BulkInsertionTester.insert_executemany_list (   self)
    One connection multiple queries.
    Uses cursor.executemany() - list of values (list)

Definition at line 293 of file ody_migr_benchmarks.py.

293  def insert_executemany_list(self):
294  '''
295  One connection multiple queries.
296  Uses cursor.executemany() - list of values (list)
297  '''
298  values = []
299  for row in self.data:
300  # still linear, done to match the order of cols and values
301  row_vals = [row[col] for col in fixture_columns]
302  values.append(row_vals)
303 
304  with connect() as connection:
305  with connection.cursor() as cursor:
306  executemany_script = pg_prepare_insert_script_executemany_list(
307  TEST_TABLE_NAME_STR, fixture_columns)
308 
309  cursor.executemany(executemany_script, values)
310 

◆ insert_iterative_single_conn_dict()

def ody_migr_benchmarks.BulkInsertionTester.insert_iterative_single_conn_dict (   self)
    One connection multiple queries (iterative).
    Insertion script incorporate dictionary values

Definition at line 268 of file ody_migr_benchmarks.py.

268  def insert_iterative_single_conn_dict(self):
269  '''
270  One connection multiple queries (iterative).
271  Insertion script incorporate dictionary values
272  '''
273  with connect() as connection:
274  with connection.cursor() as cursor:
275  for row in self.data:
276  # row is a dictionary
277  single_insert = pg_handler.pg_prepare_insert_single_dict(
278  TEST_TABLE_NAME_STR, fixture_columns)
279  cursor.execute(single_insert, row)
280 

◆ insert_iterative_single_conn_list()

def ody_migr_benchmarks.BulkInsertionTester.insert_iterative_single_conn_list (   self)
    One connection multiple queries (iterative).
    Insertion script incorporate list/tuple values

Definition at line 254 of file ody_migr_benchmarks.py.

254  def insert_iterative_single_conn_list(self):
255  '''
256  One connection multiple queries (iterative).
257  Insertion script incorporate list/tuple values
258  '''
259  with connect() as connection:
260  with connection.cursor() as cursor:
261  for row in self.data:
262  cols = list(row.keys())
263  vals = list(row.values())
264  insert_script = pg_handler.pg_prepare_insert_single_list(
265  TEST_TABLE_NAME_STR, cols)
266  cursor.execute(insert_script, vals)
267 

◆ slow_multiple_conns_dict()

def ody_migr_benchmarks.BulkInsertionTester.slow_multiple_conns_dict (   self)
    Creates a new connection for each insertion
    Insertion script incorporate dictionary values

Definition at line 243 of file ody_migr_benchmarks.py.

243  def slow_multiple_conns_dict(self):
244  '''
245  Creates a new connection for each insertion
246  Insertion script incorporate dictionary values
247  '''
248  for row in self.data:
249  # row is a dictionary of columns and values
250  single_insert = pg_handler.pg_prepare_insert_single_dict(
251  TEST_TABLE_NAME_STR, fixture_columns)
252  execute(single_insert, row)
253 

◆ slow_multiple_conns_list()

def ody_migr_benchmarks.BulkInsertionTester.slow_multiple_conns_list (   self)
Creates a new connection for each insertion

Definition at line 233 of file ody_migr_benchmarks.py.

233  def slow_multiple_conns_list(self):
234  '''Creates a new connection for each insertion'''
235  for row in self.data:
236  cols = list(row.keys())
237  vals = list(row.values())
238  # get insertion script to insert values in list/tuple form
239  insert_script = pg_handler.pg_prepare_insert_single_list(
240  TEST_TABLE_NAME_STR, cols)
241  execute(insert_script, vals)
242 

The documentation for this class was generated from the following file: