For what it's worth, I've got a Python package that contains such a mapping. See https://github.com/Toblerity/Fiona/blob/master/src/fiona/ogrext.pyx#L18. Copied here:
# Mapping of OGR integer field types to Fiona field type names.
#
# Only ints, floats, and unicode strings are supported. On the web, dates and
# times are represented as strings (see RFC 3339).
FIELD_TYPES = [
'int', # OFTInteger, Simple 32bit integer
None, # OFTIntegerList, List of 32bit integers
'float', # OFTReal, Double Precision floating point
None, # OFTRealList, List of doubles
'str', # OFTString, String of ASCII chars
None, # OFTStringList, Array of strings
None, # OFTWideString, deprecated
None, # OFTWideStringList, deprecated
None, # OFTBinary, Raw Binary data
None, # OFTDate, Date
None, # OFTTime, Time
None, # OFTDateTime, Date and Time
]
# Mapping of Fiona field type names to Python types.
FIELD_TYPES_MAP = {
'int': IntType,
'float': FloatType,
'str': UnicodeType,
}
My mapping is incomplete because I don't run into many OFT*List fields in the wild. You'd want to map these to Python arrays, I suppose (OFTIntegerList -> array('i') for example) since Python's lists aren't typed. OFTDate/Time fields are the devil and mapping these to Python DateTime doesn't make the situation any better because the datetime module API is awful. In my project, I'm going to map dates and times to ISO 8601 strings like "2012-01-02T20:59:38Z". Raw binary data would be mapped to a non-unicode Python string (which becomes the bytes type in Python 3).