Fri, 05 Feb 2021 12:16:29 +0200
update
import sqlalchemy.ext.declarative GtfsBase = sqlalchemy.ext.declarative.declarative_base(name = 'GtfsBase') class GtfsRoute(GtfsBase): __tablename__ = 'routes' id = sqlalchemy.Column(sqlalchemy.String, primary_key = True) reference = sqlalchemy.Column(sqlalchemy.String) description = sqlalchemy.Column(sqlalchemy.String) type = sqlalchemy.Column(sqlalchemy.Integer) class GtfsShape(GtfsBase): __tablename__ = 'shapes' id = sqlalchemy.Column(sqlalchemy.String, primary_key = True) length = sqlalchemy.Column(sqlalchemy.Numeric, default = 0) shape_coordinates = sqlalchemy.Column(sqlalchemy.String) class GtfsTrip(GtfsBase): __tablename__ = 'trips' id = sqlalchemy.Column(sqlalchemy.String, primary_key = True) route_id = sqlalchemy.Column(sqlalchemy.String, sqlalchemy.ForeignKey(GtfsRoute.id)) service = sqlalchemy.Column(sqlalchemy.String) shape_id = sqlalchemy.Column(sqlalchemy.String, sqlalchemy.ForeignKey(GtfsShape.id)) route = sqlalchemy.orm.relationship('GtfsRoute', foreign_keys = 'GtfsTrip.route_id') shape = sqlalchemy.orm.relationship('GtfsShape', foreign_keys = 'GtfsTrip.shape_id') class GtfsService(GtfsBase): __tablename__ = 'services' id = sqlalchemy.Column(sqlalchemy.String, primary_key = True) class GtfsStop(GtfsBase): __tablename__ = 'stops' stop_id = sqlalchemy.Column(sqlalchemy.String, primary_key = True) stop_name = sqlalchemy.Column(sqlalchemy.String) stop_latitude = sqlalchemy.Column(sqlalchemy.Numeric) stop_longitude = sqlalchemy.Column(sqlalchemy.Numeric) stop_region = sqlalchemy.Column(sqlalchemy.String) stop_region_major = sqlalchemy.Column(sqlalchemy.Boolean) class GtfsRegion(GtfsBase): # Not a gtfs data set, but the Gtfs prefix added for consistency __tablename__ = 'regions' ref = sqlalchemy.Column(sqlalchemy.String, primary_key = True) region_name_fi = sqlalchemy.Column(sqlalchemy.String, nullable = False) region_name_sv = sqlalchemy.Column(sqlalchemy.String) region_name_en = sqlalchemy.Column(sqlalchemy.String) region_name_ja = sqlalchemy.Column(sqlalchemy.String) region_short_name_fi = sqlalchemy.Column(sqlalchemy.String) region_short_name_sv = sqlalchemy.Column(sqlalchemy.String) region_short_name_en = sqlalchemy.Column(sqlalchemy.String) region_short_name_ja = sqlalchemy.Column(sqlalchemy.String) region_internal_name_fi = sqlalchemy.Column(sqlalchemy.String) region_internal_name_sv = sqlalchemy.Column(sqlalchemy.String) region_internal_name_en = sqlalchemy.Column(sqlalchemy.String) region_internal_name_ja = sqlalchemy.Column(sqlalchemy.String) municipality = sqlalchemy.Column(sqlalchemy.String, nullable = False) external = sqlalchemy.Column(sqlalchemy.Boolean) class GtfsStopTime(GtfsBase): __tablename__ = 'stop_times' trip_id = sqlalchemy.Column( sqlalchemy.String, sqlalchemy.ForeignKey(GtfsTrip.id), primary_key = True, ) stop_id = sqlalchemy.Column( sqlalchemy.String, sqlalchemy.ForeignKey(GtfsStop.stop_id), nullable = False, ) stop_sequence = sqlalchemy.Column( sqlalchemy.Integer, primary_key = True, ) arrival_time = sqlalchemy.Column(sqlalchemy.Interval, nullable = False) departure_time = sqlalchemy.Column(sqlalchemy.Interval, nullable = False) shape_distance_traveled = sqlalchemy.Column(sqlalchemy.Numeric) destination = sqlalchemy.Column(sqlalchemy.String) stop = sqlalchemy.orm.relationship( 'GtfsStop', foreign_keys = 'GtfsStopTime.stop_id', ) trip = sqlalchemy.orm.relationship( 'GtfsTrip', foreign_keys = 'GtfsStopTime.trip_id', )