querying

pdm_utils.functions.querying.append_group_by_clauses(executable, group_by_clauses)

Add GROUP BY SQLAlchemy Column objects to a Select object.

Parameters
  • executable (Select) – SQLAlchemy executable query object.

  • order_by_clauses (list) – MySQL GROUP BY clause-related SQLAlchemy object(s)

Returns

MySQL expression-related SQLAlchemy exectuable.

Return type

Select

pdm_utils.functions.querying.append_having_clauses(executable, having_clauses)

Add HAVING SQLAlchemy Column objects to a Select object.

Parameters
  • executable (Select) – SQLAlchemy executable query object.

  • having_clauses – MySQL HAVING clause-related SQLAlchemy object(s).

:returns MySQL expression-related SQLAlchemy executable. :rtype: Select

pdm_utils.functions.querying.append_order_by_clauses(executable, order_by_clauses)

Add ORDER BY SQLAlchemy Column objects to a Select object.

Parameters
  • executable (Select) – SQLAlchemy executable query object.

  • order_by_clauses (list) – MySQL ORDER BY clause-related SQLAlchemy object(s)

Returns

MySQL expression-related SQLAlchemy exectuable.

Return type

Select

pdm_utils.functions.querying.append_where_clauses(executable, where_clauses)

Add WHERE SQLAlchemy BinaryExpression objects to a Select object.

Parameters
  • executable (Select) – SQLAlchemy executable query object.

  • where_clauses (list) – MySQL WHERE clause-related SQLAlchemy object(s).

Returns

MySQL expression-related SQLAlchemy exectuable.

Return type

Select

pdm_utils.functions.querying.build_count(db_graph, columns, where=None, add_in=None)

Get MySQL COUNT() expression SQLAlchemy executable.

Parameters
  • db_graph (Graph) – SQLAlchemy structured NetworkX Graph object.

  • columns (list) – SQLAlchemy Column object(s).

  • where (list) – MySQL WHERE clause-related SQLAlchemy object(s).

  • add_in (list) – MySQL Column-related inputs to be considered for joining.

Returns

MySQL COUNT() expression-related SQLAlchemy executable.

Return type

Select

pdm_utils.functions.querying.build_distinct(db_graph, columns, where=None, order_by=None, add_in=None)

Get MySQL DISTINCT expression SQLAlchemy executable.

Parameters
  • db_graph (Graph) – SQLAlchemy structured NetworkX Graph object.

  • columns (list) – SQLAlchemy Column object(s).

  • where (list) – MySQL WHERE clause-related SQLAlchemy object(s).

  • order_by (list) – MySQL ORDER BY clause-related SQLAlchemy object(s).

  • add_in (list) – MySQL Column-related inputs to be considered for joining.

Returns

MySQL DISTINCT expression-related SQLAlchemy executable.

Return type

Select

pdm_utils.functions.querying.build_fromclause(db_graph, columns)

Get a joined table from pathing instructions for joining MySQL Tables. :param db_graph: SQLAlchemy structured NetworkX Graph object. :type db_graph: Graph :param columns: SQLAlchemy Column object(s). :type columns: Column :type columns: list :returns: SQLAlchemy Table object containing left outer-joined tables. :rtype: Table

pdm_utils.functions.querying.build_graph(metadata)

Get a NetworkX Graph object populated from a SQLAlchemy MetaData object.

Parameters

metadata (MetaData) – Reflected SQLAlchemy MetaData object.

Returns

Populated and structured NetworkX Graph object.

Return type

Column

pdm_utils.functions.querying.build_onclause(db_graph, source_table, adjacent_table)
Creates a SQLAlchemy BinaryExpression object for a MySQL ON clause

expression

Parameters
  • db_graph (Graph) – SQLAlchemy structured NetworkX Graph object.

  • source_table (str) – Case-insensitive MySQL table name.

  • adjacent_table – Case-insensitive MySQL table name.

Returns

MySQL foreign key related SQLAlchemy BinaryExpression object.

Return type

BinaryExpression

pdm_utils.functions.querying.build_select(db_graph, columns, where=None, order_by=None, add_in=None, having=None, group_by=None)

Get MySQL SELECT expression SQLAlchemy executable.

Parameters
  • db_graph (Graph) – SQLAlchemy structured NetworkX Graph object.

  • columns (list) – SQLAlchemy Column object(s).

  • where (list) – MySQL WHERE clause-related SQLAlchemy object(s).

  • order_by (list) – MySQL ORDER BY clause-related SQLAlchemy object(s).

  • add_in (list) – MySQL Column-related inputs to be considered for joining.

  • having (list) – MySQL HAVING clause-related SQLAlchemy object(s).

  • group_by (list) – MySQL GROUP BY clause-related SQLAlchemy object(s).

Returns

MySQL SELECT expression-related SQLAlchemy executable.

Return type

Select

pdm_utils.functions.querying.build_where_clause(db_graph, filter_expression)
Creates a SQLAlchemy BinaryExpression object from a MySQL WHERE

clause expression.

Parameters
  • db_graph (Graph) – SQLAlchemy structured NetworkX Graph object.

  • filter_expression (str) – MySQL where clause expression.

Returns

MySQL expression-related SQLAlchemy BinaryExpression object.

Return type

BinaryExpression

pdm_utils.functions.querying.execute(engine, executable, in_column=None, values=[], limit=8000, return_dict=True)

Use SQLAlchemy Engine to execute a MySQL query.

Parameters
  • engine (Engine) – SQLAlchemy Engine object used for executing queries.

  • executable (str) – Input a executable MySQL query.

  • return_dict (Boolean) – Toggle whether execute returns dict or tuple.

Returns

Results from execution of given MySQL query.

Return type

list[dict]

Return type

list[tuple]

pdm_utils.functions.querying.execute_value_subqueries(engine, executable, in_column, source_values, return_dict=True, limit=8000)

Query with a conditional on a set of values using subqueries.

Parameters
  • engine (Engine) – SQLAlchemy Engine object used for executing queries.

  • executable (str) – Input a executable MySQL query.

  • in_column (Column) – SQLAlchemy Column object.

  • source_values (list[str]) – Values from specified MySQL column.

  • return_dict (Boolean) – Toggle whether to return data as a dictionary.

  • limit (int) – SQLAlchemy IN clause query length limiter.

Returns

List of grouped data for each value constraint.

Return type

list

pdm_utils.functions.querying.extract_column(column, check=None)

Get a column from a supported SQLAlchemy Column-related object.

Parameters
  • column (UnaryExpression) – SQLAlchemy Column-related object.

  • check (<type BinaryExpression>) – SQLAlchemy Column-related object type.

Returns

Corresponding SQLAlchemy Column object.

Return type

Column

pdm_utils.functions.querying.extract_columns(columns, check=None)

Get a column from a supported SQLAlchemy Column-related object(s).

Parameters
  • column (UnaryExpression) – SQLAlchemy Column-related object.

  • check (<type BinaryExpression>) – SQLAlchemy Column-related object type.

Returns

List of SQLAlchemy Column objects.

Return type

list[Column]

pdm_utils.functions.querying.first_column(engine, executable, in_column=None, values=[], limit=8000)

Use SQLAlchemy Engine to execute and return the first column of fields.

Parameters
  • engine (Engine) – SQLAlchemy Engine object used for executing queries.

  • executable (str) – Input an executable MySQL query.

Returns

A column for a set of MySQL values.

Return type

list[str]

pdm_utils.functions.querying.first_column_value_subqueries(engine, executable, in_column, source_values, limit=8000)

Query with a conditional on a set of values using subqueries.

Parameters
  • engine (Engine) – SQLAlchemy Engine object used for executing queries.

  • executable (str) – Input a executable MySQL query.

  • in_column (Column) – SQLAlchemy Column object.

  • source_values (list[str]) – Values from specified MySQL column.

  • return_dict (Boolean) – Toggle whether to return data as a dictionary.

  • limit (int) – SQLAlchemy IN clause query length limiter.

Returns

Distinct values fetched from value constraints.

Return type

list

pdm_utils.functions.querying.get_column(metadata, column)

Get a SQLAlchemy Column object, with a case-insensitive input. Input must be formatted {Table_name}.{Column_name}.

Parameters
  • metadata (MetaData) – Reflected SQLAlchemy MetaData object.

  • table (str) – Case-insensitive column name.

Returns

Corresponding SQLAlchemy Column object.

Return type

Column

pdm_utils.functions.querying.get_table(metadata, table)

Get a SQLAlchemy Table object, with a case-insensitive input.

Parameters
  • metadata (MetaData) – Reflected SQLAlchemy MetaData object.

  • table (str) – Case-insensitive table name.

Returns

Corresponding SQLAlchemy Table object.

Return type

Table

pdm_utils.functions.querying.get_table_list(columns)

Get a nonrepeating list SQLAlchemy Table objects from Column objects.

Parameters

columns (list) – SQLAlchemy Column object(s).

Returns

List of corresponding SQLAlchemy Table objects.

Return type

list

pdm_utils.functions.querying.get_table_pathing(db_graph, table_list, center_table=None)

Get pathing instructions for joining MySQL Table objects.

Parameters
  • db_graph (Graph) – SQLAlchemy structured NetworkX Graph object.

  • table_list (list[Table]) – List of SQLAlchemy Table objects.

  • center_table (Table) – SQLAlchemy Table object to begin traversals from.

Returns

2-D list containing the center table and pathing instructions.

Return type

list

pdm_utils.functions.querying.join_pathed_tables(db_graph, table_pathing)

Get a joined table from pathing instructions for joining MySQL Tables.

Parameters
  • db_graph (Graph) – SQLAlchemy structured NetworkX Graph object.

  • table_pathing (list) – 2-D list containing a Table and pathing lists.

Returns

SQLAlchemy Table object containing left outer-joined tables.

Return type

Table

pdm_utils.functions.querying.query(session, db_graph, table_map, where=None)

Use SQLAlchemy session to retrieve ORM objects from a mapped object.

Parameters
  • session (Session) – Bound and connected SQLAlchemy Session object.

  • table_map – SQLAlchemy ORM map object.

  • where (list) – MySQL WHERE clause-related SQLAlchemy object(s).

  • order_by (list) – MySQL ORDER BY clause-related SQLAlchemy object(s).

Returns

List of mapped object instances.

Return type

list