For the models, all of the field types (for example, Integer, String, and Float) are defined using SQLAlchemy ORM-column classes, except for the geometry columns, which use the GeoAlchemy2 Geometry class. The Geometry class requires a geometry type and SRID:
# Define the Arena class, which will model the Arena database tableclass Arena(Base): __tablename__ = 'arena' id = Column(Integer, primary_key=True) name = Column(String) longitude = Column(Float) latitude = Column(Float) geom = Column(Geometry(geometry_type='POINT', srid=4326))
The County class has a primary key field and a name field, as well as fields that define the many-to-one relationship with the State class. Instead of a POINT geometry type, it uses MULTIPOLYGON ...