Welcome to brunns-row’s documentation!¶
Convenience wrapper for DB API and csv.DictReader rows, and similar, inspired by Greg Stein’s lovely dtuple module.
Installation¶
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.