A
Alec Taylor
Dear Python community,
I am analysing designing an abstraction layer over a select few NoSQL
and SQL databases.
Specifically:
- Redis, Neo4j, MongoDB, CouchDB
- PostgreSQL
Being inexperienced; it is hard to know a nice way of abstracting search.
For conciseness in my explanation, think of `Table` as being table,
object, entity or key; and `name` as being name or type.
Maybe `res = Table.name.search(<attr_list with conditions>)`
Or on multiple `Table`:
`res = AbstractDB().AbstractSearch(<Table.attr_list with conditions>
<conditions> <Table.attr_list with conditions>)`
Then: `res.paginate(limit=25, offset=5)`
Or if you want all: `res.all()`
And additionally borrow/alias from a relevant subset of PEP249, e.g.:
`fetchone` and `fetchmany`
Will open-source this once it's of sufficient functionality.
What do you think?
Advice on better design; or just feedback on what I've mentioned?
Thanks,
Alec Taylor
PS: I am using Bottle. You'll note that some of the syntax I've
references is inspired from web2py's DAL and ODMG.
I am analysing designing an abstraction layer over a select few NoSQL
and SQL databases.
Specifically:
- Redis, Neo4j, MongoDB, CouchDB
- PostgreSQL
Being inexperienced; it is hard to know a nice way of abstracting search.
For conciseness in my explanation, think of `Table` as being table,
object, entity or key; and `name` as being name or type.
Maybe `res = Table.name.search(<attr_list with conditions>)`
Or on multiple `Table`:
`res = AbstractDB().AbstractSearch(<Table.attr_list with conditions>
<conditions> <Table.attr_list with conditions>)`
Then: `res.paginate(limit=25, offset=5)`
Or if you want all: `res.all()`
And additionally borrow/alias from a relevant subset of PEP249, e.g.:
`fetchone` and `fetchmany`
Will open-source this once it's of sufficient functionality.
What do you think?
Advice on better design; or just feedback on what I've mentioned?
Thanks,
Alec Taylor
PS: I am using Bottle. You'll note that some of the syntax I've
references is inspired from web2py's DAL and ODMG.