etcdb.execute.dml package

Submodules

etcdb.execute.dml.delete module

Implement DELETE query.

etcdb.execute.dml.delete.execute_delete(etcd_client, tree, db)[source]

Execute DELETE query

etcdb.execute.dml.insert module

Implement INSERT query.

etcdb.execute.dml.insert.get_pk_field(etcd_client, db, tbl)[source]

Get primary key column for table db.tbl.

Parameters:
  • etcd_client – Etcd client.
  • db – database name.
  • tbl – table name.
Returns:

Primary key column.

Return type:

Column

etcdb.execute.dml.insert.get_table_columns(etcd_client, db, tbl)[source]

Get primary key column for table db.tbl.

Parameters:
  • etcd_client – Etcd client.
  • db – database name.
  • tbl – table name.
Returns:

Primary key column.

Return type:

ColumnSet

Raises:

ProgrammingError – if table or database doesn’t exist

etcdb.execute.dml.insert.insert(etcd_client, tree, db)[source]

Execute INSERT query

Parameters:
  • etcd_client (pyetcd.client.Client) – etcd client
  • tree (SQLTree) – Parse tree
  • db (str) – Current database
Raises:

IntegrityError – if duplicate primary key

etcdb.execute.dml.select module

Implement SELECT query.

etcdb.execute.dml.select.eval_row(table_columns, table_row, tree)[source]

Find values of a row. table_columns are fields in the table. The result columns is taken from tree.expressions.

Parameters:
  • table_columns (ColumnSet) – Columns in the table row.
  • table_row (Row) – Input row.
  • tree (SQLTree) – Parsing tree.
etcdb.execute.dml.select.execute_select(etcd_client, tree, db)[source]

Execute SELECT query.

Parameters:
  • etcd_client (pyetcd.client.Client) – etcd client.
  • db (str) – Current database.
  • tree (SQLTree) – Parse tree.
Returns:

ResultSet instance.

Return type:

ResultSet

etcdb.execute.dml.select.execute_select_no_table(tree)[source]

Execute SELECT that doesn’t read from a table. SELECT VERSION() or similar.

etcdb.execute.dml.select.execute_select_plain(etcd_client, tree, db)[source]

Execute SELECT that reads rows from table.

etcdb.execute.dml.select.fix_tree_star(tree, etcd_client, db, tbl)[source]

If parsing tree contains [[“*”, null], null] expression it means the query was SELECT * . So, the expressions needs to be replaced with actual field names.

etcdb.execute.dml.select.get_row_by_primary_key(etcd_client, db, table, primary_key, **kwargs)[source]

Read row from etcd by its primary key value.

Parameters:
  • etcd_client (Client) –
  • db
  • table
  • primary_key – Primary key value.
  • kwargs – See below.
Returns:

Row

Return type:

Row

Keyword Arguments:
 
  • wait (bool) - If True it will wait for a change in the key.
  • wait_index (int) - When waiting you can specify index to
    wait for.
etcdb.execute.dml.select.group_function(table_columns, table_row, tree)[source]

True if resultset should be grouped

Returns:Grouping function or None and its position.
Return type:tuple(EtcdbFunction, int)
etcdb.execute.dml.select.group_result_set(func, result_set, table_row, tree, pos)[source]

Apply a group function to result set and return an aggregated row.

Parameters:
  • func (callable) – Aggregation function.
  • result_set (ResultSet) – Result set to aggregate.
  • table_row (Row) – Table row to base aggregated row on.
  • tree (SQLTree) – Parsing tree.
  • pos (int) – Aggregate function position in the resulting row.
Returns:

Result set with aggregated row.

Return type:

ResultSet

etcdb.execute.dml.select.list_table(etcd_client, db, tbl)[source]

Read primary key values in table db.tbl.

Parameters:
  • etcd_client (pyetcd.client.Client) – etcd client.
  • db – database name.
  • tbl – table name.
Returns:

list of primary keys.

Return type:

list

etcdb.execute.dml.select.prepare_columns(tree)[source]

Generate ColumnSet for query result. ColumnsSet doesn’t include a grouping function.

Returns:Columns of the query result.
Return type:ColumnSet

etcdb.execute.dml.show module

Implement SHOW queries.

etcdb.execute.dml.show.desc_table(etcd_client, tree, db)[source]

Execute DESC table query#

Parameters:
  • etcd_client (pyetcd.client.Client) – etcd client
  • tree (SQLTree) – Parse tree
  • db (str) – Current database
Returns:

ResultSet instance

Return type:

ResultSet

etcdb.execute.dml.show.show_databases(etcd_client)[source]

Execute SHOW [FULL] TABLES query

Parameters:etcd_client (pyetcd.client.Client) – etcd client
Returns:ResultSet instance
Return type:ResultSet
etcdb.execute.dml.show.show_tables(etcd_client, tree, db)[source]

Execute SHOW [FULL] TABLES query#

Parameters:
  • etcd_client (pyetcd.client.Client) – etcd client
  • db (str) – Current database
  • tree (SQLTree) – Parse tree
Returns:

ResultSet instance

Return type:

ResultSet

etcdb.execute.dml.update module

Implement UPDATE query.

etcdb.execute.dml.update.execute_update(etcd_client, tree, db)[source]

Execute UPDATE query

etcdb.execute.dml.use module

Implement USE query.

etcdb.execute.dml.use.use_database(etcd_client, tree)[source]

Return database name if it exists or raise exception.

Parameters:
  • etcd_client (pyetcd.client.Client) – etcd client
  • tree (SQLTree) – Parsing tree.
Returns:

Database name

Raises:

OperationalError – if database doesn’t exist.

etcdb.execute.dml.wait module

Implement WAIT query.

etcdb.execute.dml.wait.execute_wait(etcd_client, tree, db)[source]

Execute WAIT.

Parameters:
  • etcd_client (Client) – Etcd client.
  • tree (SQLTree) – Parsing tree.
  • db (str) – Current database.

Module contents

Data modification language routines.

etcdb.execute.dml.get_exclusive_lock(etcd_client, tree, db)[source]

Acquire a write lock on a table. The lock may be explicitly given from a parsing tree when UPDATE or INSERT specifies it with the USE LOCK statement.

Parameters:
  • etcd_client (pyetcd.client.Client) – etcd connection
  • tree (SQLTree) – Parsing tree
  • db (str) – Database name. It doesn’t necessary come from the parsing tree. That’s why it has to specified.
Returns:

Write lock on a table from the parsing tree in the given database db.

Return type:

WriteLock