Convenience wrapper for DB API and csv.DictReader rows, and similar.
Project description
brunns-row
Convenience wrapper for DB API and csv.DictReader rows, and similar, inspired by Greg Stein's lovely dtuple module.
Setup
Install with pip:
pip install brunns-row
(As usual, use of a venv or virtualenv is recommended.)
Usage
The basic approach is to create a wrapper object from some kind of description - typically a
DBAPI cursor's
description, or a
csv.DictReader's
fieldnames attribute - then to use the wrapper's
wrap(row)
method to wrap each row. wrap(row)
returns an object from which you can access the row's fields as
attributes. A couple of simple examples:
DB API
cursor = conn.cursor()
cursor.execute("SELECT kind, rating FROM sausages ORDER BY rating DESC;")
wrapper = RowWrapper(cursor.description)
rows = [wrapper.wrap(row) for row in cursor.fetchall()]
for row in rows:
print(row.kind, row.rating)
csv.DictReader
reader = csv.DictReader(csv_file)
wrapper = RowWrapper(reader.fieldnames)
rows = [wrapper.wrap(row) for row in reader]
for row in rows:
print(row.kind, row.rating)
Attributes names are simply the column names where possible, converted to valid identifiers where necessary by replacing invalid characters with "_"s, prefixing any leading numerics with "a_", and de-duplicating where necessary by adding numeric suffixes.
Developing
Requires tox. Run make precommit
tells you if you're OK to commit. For more options, run:
make help
Releasing
Requires hub, setuptools,
wheel and twine. To release version n.n.n
, first
update the version number in setup.py
, then:
version="n.n.n" # Needs to match new version number in setup.py.
git checkout -b "release-$version"
make precommit && git commit -am"Release $version" && git push --set-upstream origin "release-$version" # If not already all pushed, which it should be.
hub release create "V$version" -t"release-$version" -m"Version $version"
python setup.py sdist bdist_wheel
twine upload dist/*$version*
git checkout master
git merge "release-$version"
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for brunns_row-2.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0953f231c812658a7cfd3240f1f6fac92e7b5bba247cfc22a4afa134f2a540f3 |
|
MD5 | f1d9f7a2cdfad61539e100306f7525ce |
|
BLAKE2b-256 | ba5731cd6adb9ac92be4875ac0adb070acc32d29c6afbd5b0484873c7539495b |