relations is a simple Python implementation of a relational algebra engine.
Example
Create a relation with a heading (i.e. a list of field names):
>>> import relations
>>> employees = relations.Relation('employee_name', 'dept_name')
>>> employees
< Relation('dept_name', 'employee_name') >
The fields are re-ordered alphabetically, so that the order of values in tuples is consistent between equivalent but separate relations. Add tuples to the relation:
>>> alice = employees.add(employee_name='Alice', dept_name='Finance')
>>> bob = employees.add(employee_name='Bob', dept_name='Sales')
>>> len(employees)
2
A relation is a set; duplicate tuples are considered identical:
>>> _ = employees.add(employee_name='Alice', dept_name='Finance')
>>> len(employees)
2
A relation implements the relational algebra, including the unary operators Select:
>>> finance_emps = employees.select(lambda emp: emp.dept_name == 'Finance')
>>> len(finance_emps)
1
Project:
>>> names = employees.project('employee_name')
>>> names.contains(employee_name='Bob')
True
>>> names.contains(employee_name='Charlie')
False
and Rename:
>>> employees_renamed = employees.rename(name='employee_name')
>>> employees_renamed.contains(name='Bob')
True
It also supports the set operations Union, Intersection and Difference.
Product's homepage
Requirements:
· Python