Skip to content
Please note that GitHub no longer supports your web browser.

We recommend upgrading to the latest Google Chrome or Firefox.

Learn more
A pure Python Database Abstraction Layer
Python
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs google_adapters fix May 25, 2015
pydal fixed a problem with filter by id in restapi Aug 21, 2019
tests fixed escape sequencies Aug 18, 2019
.codecov.yml turn off codecov/changes report May 31, 2016
.coveragerc Fix conflict 281, readded .coveragerc & .gitignore Aug 30, 2015
.gitignore Fix conflict 281, readded .coveragerc & .gitignore Aug 30, 2015
.travis.yml do not test on gae py3 until new sdk logic Aug 18, 2019
AUTHORS Typo in @niphlod's last name Sep 25, 2015
CHANGES Releasing 17.11 Nov 13, 2017
LICENSE.txt fixed license file Jul 7, 2019
MANIFEST.in Avoid to ship .DS_Store files in pypi source distributions May 23, 2015
Makefile fixed order May 9, 2019
README.md Update README.md (#551) Feb 11, 2019
appveyor.yml Remove python 3.3 as pymssql doesn't support it anymore (#560) Mar 6, 2019
setup.cfg
setup.py bette regex, thanks Paolo Apr 19, 2019
tox.ini Fix py3 blob (#520) Feb 24, 2018

README.md

pyDAL

pyDAL is a pure Python Database Abstraction Layer.

It dynamically generates the SQL/noSQL in realtime using the specified dialect for the database backend, so that you do not have to write SQL code or learn different SQL dialects (the term SQL is used generically), and your code will be portable among different types of databases.

pyDAL comes from the original web2py's DAL, with the aim of being compatible with any Python program. pyDAL doesn't require web2py and can be used in any Python context.

pip version Build Status MS Build Status Coverage Status API Docs Status

Installation

You can install pyDAL using pip:

pip install pyDAL

Usage and Documentation

Here is a quick example:

>>> from pydal import DAL, Field
>>> db = DAL('sqlite://storage.db')
>>> db.define_table('thing', Field('name'))
>>> db.thing.insert(name='Chair')
>>> query = db.thing.name.startswith('C')
>>> rows = db(query).select()
>>> print rows[0].name
Chair
>>> db.commit()

The complete documentation is available on http://www.web2py.com/books/default/chapter/29/06/the-database-abstraction-layer

What's in the box?

A little taste of pyDAL features:

  • Transactions
  • Aggregates
  • Inner Joins
  • Outer Joins
  • Nested Selects

Which databases are supported?

pyDAL supports the following databases:

  • SQLite
  • MySQL
  • PostgreSQL
  • MSSQL
  • FireBird
  • Oracle
  • DB2
  • Ingres
  • Sybase
  • Informix
  • Teradata
  • Cubrid
  • SAPDB
  • IMAP
  • MongoDB

License

pyDAL is released under the BSD-3c License. For further details, please check the LICENSE file.

You can’t perform that action at this time.