dbms Package

dbms Package

DBMS - DataBases Made Simpler is a database adapter that wraps and provides uniform interface to other DB API compliant adapters.

It manages connections, doing automatic imports and providing a uniform connection method to most common databases. Implements DictCursor, NamedTupleCursor and OrderedDictCursor.

It currently supports IBM DB2, Firebird, MSSQL Server, MySQL, Oracle, PostgreSQL, SQLite and ODBC connections.

connect Module

Create connection objects

The dbms.connect.Connection object provides a uniform DB API 2.0 interface to the underlying database connection objects.

The different database adapters are only imported in the factory functions so they are not required unless an adapter is actually used. A reference to the adapter is saved in the connection’s interface variable.

class dbms.connect.Connection(connection, interface, dbname=None)[source]

Bases: object

DBI 2.0 Compliant Connection object. :param connection: Connection of underlying adapter. Saved as _connection

and any methods or attributes not handled locally are delegated to this.
Parameters:
  • interface – Reference to the underlying adapter. e.g. cx_Oracle, ibm_db_dbi, pymssql...
  • dbname – name of connected database or name of database file

In addition to the

cursor(cursorType=<class 'dbms.cursors.DictCursor'>, **kwargs)[source]

Return new Cursor object.

dbname = None

database name

inspect = None

get names of database objects

interface = None

reference to adapter (cx_Oracle, ibm_db_dbi...)

loggedCursor(cursorType=<class 'dbms.cursors.DictCursor'>, **kwargs)[source]

Return new logged cursor. By default queries are logged to the configuration database and are viewable from dbms.logger.view() and dbms.logger.search().

paramHelp[source]

Print help on this interface’s parameter style.

placeholder = None

placeholder for variable replacement

probe = None

get detailed information of database schemata

dbms.connect.db2(user, password, database, host='localhost', **kwargs)[source]

Return a connection to IBM DB2. Adapter ibm_db_dbi is required.

dbms.connect.firebird(user, password, database, host='localhost', port=3050, **kwargs)[source]

Return a connection to Firebird. Adapter fdb is required.

dbms.connect.mssql(user, password, database, host='localhost', port=1433, **kwargs)[source]

Return a connection to an MS SQL Server database. Adapter pymssql is required.

dbms.connect.mysql(user, password, database='mysql', host='localhost', port=3306, **kwargs)[source]

Return a connection to a MySQL database. Either MySQLdb or msql.connector are required.

dbms.connect.odbc(user, password, database, host='localhost', port=1433, driver='SQL Server', **kwargs)[source]

Return a connection to an ODBC database. Adapter pyodbc is required.

dbms.connect.oracle(user, password, database, host=None, port=1521, **kwargs)[source]

Return a connection to an Oracle database. Adapter cx_Oracle is required.

dbms.connect.postgres(user, password, database='postgres', host='localhost', port=5432, **kwargs)[source]

Return a connection to a PostgreSQL database. Adapter psycopg2 is required.

dbms.connect.sqlite(database, **kwargs)[source]

Return connecton to SQLite database.

cursors Module

Defines four cursor types that only differ in the data type of the record set returned. They all wrap and delegate to the adapter’s actual cursor stored in the _cursor attribute.

The default cursor is DictCursor because it offers the most flexibility.

class dbms.cursors.Cursor(*args, **kwargs)[source]

Bases: object

Basic cursor object that returns results as list. Designed as the base class for the dictionary type cursors. But can also be used like a standard cursor.

LOWER_CASE = 'lower'
PRESERVE_CASE = 'preserve'
UPPER_CASE = 'upper'
columns(case=None)[source]

Return list of column names.

execute(query, bindvars=())[source]

Prepare and execute a database operation For help on parameters see your connection object’s showParmHelp()

executemany(query, bindvars)[source]

Prepare a database operation and execute against all sequences

fetchall()[source]

Fetch all (remaining) rows of a query result, returning them as a sequence of rows. Note the cursor’s arraysize attribute can affect the performance of this operation.

fetchmany(size=None)[source]

Fetch the next set of rows of a query result, returning a sequence of rows. An empty sequence is returned when no more rows are available.

Parameters:size – The number of rows fetched. If it is not given, the

cursor’s arraysize attribute is used.

fetchone()[source]

Fetch the next row of a query result, returning a single sequence, or None if no more data.

next()[source]

Iterate over result set

selectinto(query, bindvars=())[source]

Run query and return the result. Query must return one and only one row.

showStatement()[source]

Output last statement and bind variables

class dbms.cursors.DictCursor(*args, **kwargs)[source]

Bases: dbms.cursors.Cursor

Cursor that returns records as Record objects. This is the most versatile cursor.

class dbms.cursors.NamedTupleCursor(*args, **kwargs)[source]

Bases: dbms.cursors.Cursor

Cursor that returns records as namedtuples.

class dbms.cursors.OrderedDictCursor(*args, **kwargs)[source]

Bases: dbms.cursors.Cursor

Cursor that returns records OrderedDict. Not as efficient or functional as DictCursor or NamedTupleCursor.

class dbms.cursors.Record(*args)[source]

Bases: list

Row object is a memory optimized object that allows access by: column name row[‘column_name’] attributes row.column_name column index row[3] slicing row[1:4]

Record will be dynamically subclassed as dbms.cursors.Record each time a DictCursor is executed.

copy() → a dict representation of Record[source]
get(k[, d]) → Record[k] if k in Record, else d[source]
has_key(k) → True if Record has key k, else False[source]
items() → list of Record's (key, value) pairs as 2-tuples[source]
iteritems() → iterator over (key, value) items of Record[source]
iterkeys() → iterator over keys of Record[source]
itervalues() → iterator over values of Record[source]
keys() → list of Record's keys[source]
pprint()[source]

Pretty Print record.

classmethod setColumns(*args)[source]
values() → list of Record's values[source]
class dbms.cursors.RecordOD(*args, **kwds)[source]

Bases: collections.OrderedDict

OrderedDict that allows value to be fetched by index.

pprint()[source]
dbms.cursors.iskeyword()

x.__contains__(y) <==> y in x.

probe Module

Probe queries the database to get detailed information about its structure.

If the server type can be determined, the Connection object instantiates Probe, or one of its subclasses, in the Connection.probe attribute.

class dbms.probe.Probe(connection)[source]

Bases: object

Probe database schemata.

There is no universal way to probe a database’s structure. But Probe will work with databases that provide information_schema views. Other database must subclass Probe and return the same column names.

getColumns(table, schema=None)[source]

Return list of table/view columns. [Record(name, data_type, is_nullable, is_pk)]

getDatabases()[source]

Return list of databases.

getFunctions(schema=None)[source]

Return list of functions. [Record(name, schema_name, sys_ind)]

getProcedures(schema=None)[source]

Return list of procedures. [Record(name, schema_name, sys_ind)]

getSchemas()[source]

Return list of schemas. [Record(name, is_connected_db, sys_ind)].

getServerVersion()[source]

Get version of database engine

getTables(schema=None)[source]

Return list of tables. [Record(name, schema_name, sys_ind)]

getViews(schema=None)[source]

Return list of views. [Record(name, schema_name, sys_ind)]

hasSchema = True
class dbms.probe.ProbeDB2(connection)[source]

Bases: dbms.probe.Probe

getColumns(table, schema=None)[source]

Return list of table/view columns. [Record(name, data_type, is_nullable, is_pk)]

getDatabases()[source]

Return list of databases/catalogs.

getFunctions(schema=None)[source]

Return list of functions. [Record(name, schema_name, sys_ind)]

getProcedures(schema=None)[source]

Return list of procedures. [Record(name, schema_name, sys_ind)]

getSchemas()[source]

Return list of schemas. [Record(name, is_connected_db, sys_ind)].

getServerVersion()[source]

Get version of database engine

getTables(schema=None)[source]

Return list of tables. [Record(name, schema_name, sys_ind)]

getViews(schema=None)[source]

Return list of views. [Record(name, schema_name, sys_ind)]

class dbms.probe.ProbeFirebird(connection)[source]

Bases: dbms.probe.Probe

getColumns(table, schema=None)[source]

Return list of table/view columns. [Record(name, data_type, is_nullable, is_pk)]

getDatabases()[source]

Return list of databases/catalogs.

getFunctions(schema=None)[source]

Return list of functions. [Record(name, schema_name, sys_ind)]

getProcedures(schema=None)[source]

Return list of procedures. [Record(name, schema_name, sys_ind)]

getSchemas()[source]

Return list of schemas. [Record(name, is_connected_db, sys_ind)].

getServerVersion()[source]

Get version of database engine

getTables(schema=None)[source]

Return list of tables. [Record(name, schema_name, sys_ind)]

getViews(schema=None)[source]

Return list of views. [Record(name, schema_name, sys_ind)]

hasSchema = False
class dbms.probe.ProbeMSSQL(connection)[source]

Bases: dbms.probe.Probe

getDatabases()[source]

Return list of databases/catalogs.

getServerVersion()[source]

Get version of database engine.

class dbms.probe.ProbeMySQL(connection)[source]

Bases: dbms.probe.Probe

getDatabases()[source]

Return list of databases/catalogs.

getSchemas()[source]

Return list of schemas. [Record(name, is_connected_db, sys_ind)].

class dbms.probe.ProbeOracle(connection)[source]

Bases: dbms.probe.Probe

getColumns(table, schema=None)[source]

Return list of table/view columns. [Record(name, data_type, is_nullable, is_pk)]

getDatabases()[source]
getFunctions(schema=None)[source]

Return list of functions. [Record(name, schema_name, sys_ind)]

getPackageProcedures(package, schema=None)[source]

Return list of functions/procedures in a package. [Record(name, package_name, schema_name)]

getPackages(schema=None)[source]

Return list of packages. [Record(name, schema_name, sys_ind)]

getProcedures(schema=None)[source]

Return list of procedures. [Record(name, schema_name, sys_ind)]

getSchemas()[source]

Return list of schemas. [Record(name, is_connected_db, sys_ind)].

getServerVersion()[source]

Get version of database engine

getTables(schema=None)[source]

Return list of tables. [Record(name, schema_name, sys_ind)]

getViews(schema=None)[source]

Return list of views. [Record(name, schema_name, sys_ind)]

class dbms.probe.ProbePostgres(connection)[source]

Bases: dbms.probe.Probe

getDatabases()[source]

Return list of databases/catalogs.

class dbms.probe.ProbeSQLite(connection)[source]

Bases: dbms.probe.Probe

getColumns(table, schema=None)[source]

Return list of table/view columns. [Record(name, data_type, is_nullable, is_pk)]

getDatabases()[source]

Return list of databases.

getFunctions(schema=None)[source]

Return list of functions. [Record(name, schema_name, sys_ind)]

getProcedures(schema=None)[source]

Return list of procedures. [Record(name, schema_name, sys_ind)]

getSchemas()[source]

Return list of schemas. [Record(name, is_connected_db, sys_ind)].

getServerVersion()[source]

Get version of database engine

getTables(schema=None)[source]

Return list of tables. [Record(name, schema_name, sys_ind)]

getViews(schema=None)[source]

Return list of views. [Record(name, schema_name, sys_ind)]

hasSchema = False

schema Module

class dbms.schema.Inspect(probe)[source]

Bases: object

Inspect returns a simple list of object names. The Connection object instantiates Inspect in the Connection.inspect attribute. The database schemata is cached so if you are executing DDL statements you must call inspect.refresh() to see the changes.

If you need detailed information, rather than a list of names, use Connection.probe instead.

columns(table, schema=None)[source]
databases()[source]
formatName(name, schema=None)[source]

Properly quote identifiers if needed.

functions(schema=None)[source]
procedures(schema=None)[source]
refresh(object_type='tree')[source]

Refresh objects

schemas()[source]
systemTables(schema=None)[source]
systemViews(schema=None)[source]
tables(schema=None)[source]
views(schema=None)[source]

settings Module

The settings module manages the configuration db, saved connections and query logging.

class dbms.settings.Logger[source]

Bases: object

Log queries and view query history.

log(connection, query, params=None, status=None)[source]
search(searchTerms, connection=None)[source]

Search for matches in the query log.

view(connection=None, limit=50, offset=0)[source]

List entries in the query log.

class dbms.settings.Servers[source]

Bases: object

Manage saved connections.

delete(name)[source]

Delete a saved connection.

list()[source]

List saved connections.

open(name)[source]

Open saved connection.

save(name, serverType, **kwargs)[source]
Save connection to config db.
param name:name to save connection as
param serverType:
 connection factory from dbms.connect (‘oracle’, ‘mysql’, ‘mssql’)
param kwargs:arguments to be passed to connection factory (user=’dba’, password=’secret’)
setMasterPassword(value)[source]

Set MasterPassword to enable encryption/decryption of stored passwords.

utils Module

Utilities to work with cursors and write queries independent of server implementations.

class dbms.utils.NamedParam(name, value)[source]

Bases: dbms.utils.Param

Named parameter to use with formatQuery()

class dbms.utils.Param(value)[source]

Bases: object

Parameter to use with formatQuery()

dbms.utils.createInsert(cur, table, paramstyle=None)[source]

Create Insert Statement

dbms.utils.cursorToCSV(cur, filename)[source]

Exports cursor to CSV file

dbms.utils.cursorToCursorCopy(src, dest, destTable)[source]

Copy record set from source to destination cursor. This can be used to copy data across different servers. However, their data types need to be similar.

This does not perform constraint checks and will fail if you try to insert a record that already exists on the destination table.

dbms.utils.cursorToFixedWidth(cur, filename=None, colWidths=())[source]

Exports cursor to fixed width text. If colWidths are passed in values will be truncated if they exceed that. If colWidths are not passed, they will be calculated based on the first 20 rows and values will not be truncated.

dbms.utils.cursorToJSON(cur, filename=None)[source]

Export cursor to JSON encoded string

dbms.utils.cursorToXLSX(cur, filename, exportQuery=True)[source]

Exports cursor to Excel file. Requires xlswriter.

dbms.utils.cursorToXML(cur, filename, prettyprint=True, exportQuery=True)[source]

Exports cursor to XML file

dbms.utils.formatQuery(chunks, paramstyle)[source]

Return formatted query and parameter list

chunks is an array of query pieces that are either text or instance of Param class. Usage: query = (‘SELECT * FROM people WHERE status = ‘,

Param(‘A’), ‘ AND last_name LIKE ‘, NamedParam(‘last_name’, ‘Smith%’), ‘ ORDER BY last_name, first_name’)

sql, params = formatQuery(query, ‘named’) Adapted from: http://code.activestate.com/recipes/278612-single-parameters-style-for-db-api-modules/

Table Of Contents

Previous topic

Welcome to dbms’s documentation!

This Page