Using sqlalchemy and marshmallow I generate a class and a schema:
class Company2(db.Model):
__tablename__ = "company2"
__searchable__ = ['name2']
id = db.Column(db.Integer, unique=True, primary_key=True)
uuid = db.Column(db.String(32), unique=True, nullable=False, default=get_uuid)
code = db.Column(db.String(30))
jarCode = db.Column(db.String(30))
date = db.Column(db.String(30))
month = db.Column(db.String(30))
name = db.Column(db.String(120))
avgWage = db.Column(db.String(50))
avgWage2 = db.Column(db.String(50))
numInsured = db.Column(db.String(100))
numInsured2 = db.Column(db.String(100))
tax = db.Column(db.String(50))
debt = db.Column(db.String(50))
deferredDebt = db.Column(db.String(50))
upvote = db.Column(db.Integer, default=0)
downvote = db.Column(db.Integer, default=0)
details = db.relationship('CompanysDetailsSecond', backref='author', lazy=True)
basic_data = db.relationship('CompanyBasicData', backref='author', lazy=True)
public_data = db.relationship('Public', backref='author', lazy=True)
vote = db.relationship('Vote', backref='author', lazy=True)
class CompanyBasicData(db.Model):
__tablename__ = "companybasicdata"
id = db.Column(db.Integer, primary_key=True)
uuid = db.Column(db.String(32), unique=True, default=get_uuid)
information = db.Column(JSON)
user_id = db.Column(db.Integer, db.ForeignKey('company2.id'), nullable=False)
class BasicMarsmellow(SQLAlchemySchema):
# from infromation JSON field extract activityCode
activityCode = ma.String(attribute="information.data.activityCode")
class MarsmellowNested(SQLAlchemyAutoSchema):
class Meta:
model = Company2
basic_data = Nested(BasicMarsmellow, many=True)
BasicMarsmellow already contains JSON data in sqlalchemy field, so no serialization is required, but when I added this BasicMarsmellow schema, request is taking way to long, 5 seconds to fetch 12 records using pagination method of sqlalchemy. is there any way to optimise code?