Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
================================= About Doze ================================= Doze is a small, but expressive, SQL wrapper and Database inspector library, written in Python. It allows you to build and modify SQL commands programmatically, and inspect database relations, such as schemas, tables, columns, etc. It supports multiple database connections to multiple backends (MySQL, PostgreSQL, SQLite) by default. Doze has built in support for Server Side Cursors, and asynchronous connections, making it suitable for working with large datasets, without needing a lot of memory. In contrast to many SQL Wrappers and ORMs, Doze is designed to let you build complex SQL commands, without ever needing to resort to writing SQL by hand. In fact, one major goal for Doze is to eventually support the entire SQL99 specification. It already supports many modern features, such as Common Table Expressions (WITH ... SELECT), complex Joins, Where clauses, and Sub Queries. Other modern features are being actively worked on. ================================= Doze Examples ================================= This is a working example of the Doze API. The API tries to resemble the SQL language as much as possible: import doze import doze.backend.pgsql as pgsql builder = pgsql.Builder() builder.select('a.*, b.somefield').from_('maintable a')\ .join(pgsql.Join('secondtable b').where( pgsql.Where('refid').equals('id', kind=doze.FIELD))) When no table name / alias is given in the Join object, Doze will automatically attempt to determine tables. You can also inspect database relations: import doze import doze.backend.pgsql as pgsql import doze.backend.pgsql.relations as pg_relations db = ...connect()... database = pg_relations.Database.get(db) for table_name, table in database.tables: print '=====================================================' print '%s owned by %s' % (table.name, table.owner) print '=====================================================' print 'Columns:' for column_name, column in table.columns: print '\t%s | %s' % (column.name, column.internaltype) print 'Indexes:' for index_name, index in table.indexes: print '\t%s (%s)' % (index.name, ', '.join(index.columns))