On Tuesday, June 20, 2017 at 9:53:10 AM UTC-7, Jonathan Vanasco wrote:
>
> you're almost there.
>
> flip a few lines around to rewrite the query to select from product... 
>  e.g. something like
>
> SELECT r_product_list.* FROM r_product_list
> JOIN r_product_category_history_list on 
> r_product_list.r_id=r_product_category_history_list.r_id
> JOIN r_product_reviews_historical_details_list on 
> r_product_list.most_recent_historical_reviews_id=
> r_product_reviews_historical_details_list.id 
>
> then it should be clear how to convert to the sqlalchemy syntax.
>


Here are my models btw:v


class rProduct(Product):
    __tablename__ =  'r_product_list'
    id = db.Column(ForeignKey(u'product_list.id'))
    r_id = db.Column(String(64), nullable=False, index=True, 
primary_key=True)

    category_history = relationship("rProductCategoryHistory")
    image = db.Column(String(512))
    category_history_entry = relationship("rProductCategoryHistory", 
uselist=False)
    history = relationship("rProductHistoricalDetails", 
back_populates='r_product', foreign_keys='rProductHistoricalDetails.r_id')

    most_recent_historical_details_id = db.Column(Integer,
        ForeignKey('r_product_historical_details_list.id'))
    most_recent_historical_details_entry = 
relationship("rProductHistoricalDetails", uselist=False, 
foreign_keys=[most_recent_historical_details_id])

    most_recent_historical_reviews_id = db.Column(Integer,
        ForeignKey('r_product_reviews_historical_details_list.id'))
    most_recent_historical_reviews_entry = 
relationship("rProductReviewsHistoricalDetails", uselist=False, 
foreign_keys=[most_recent_historical_reviews_id])

    __mapper_args__ = {
            'polymorphic_identity':'r_product'
        }


class rProductCategoryHistory(db.Model):
    __tablename__ =  'r_product_category_history_list'
    id = db.Column(Integer, primary_key=True)
    r_id = db.Column(String(64), ForeignKey('r_product_list.r_id'), 
nullable=False)
    product = relationship("rProduct", uselist=False)

    in_new = db.Column(db.Boolean(1), default=False, server_default="0")
    in_trending = db.Column(db.Boolean(1), default=False, 
server_default="0")
    in_top_finds = db.Column(db.Boolean(1), default=False, 
server_default="0")
    in_deals = db.Column(db.Boolean(1), default=False, server_default="0")
    is_tsv = db.Column(db.Boolean(1), default=False, server_default="0")
    is_big_deal = db.Column(db.Boolean(1), default=False, 
server_default="0")

    availability = db.Column(String(64))

    time_updated = db.Column(TIMESTAMP, default=func.now(),
        onupdate=func.now(), server_default=text("CURRENT_TIMESTAMP"))



class rProductHistoricalDetails(db.Model):
    __tablename__ = 'r_product_historical_details_list'
    id = db.Column(Integer, primary_key=True)

    r_id = db.Column(String(64), ForeignKey('r_product_list.r_id'), 
nullable=False)
    r_product = relationship("rProduct", uselist=False, foreign_keys=[r_id])
    # product = relationship("rProduct", uselist=False, 
back_populates=[r_id])

    r_price = db.Column( Float ) 
    sale_price = db.Column( Float ) 
    video = db.Column(String(512))

    time_updated = db.Column(TIMESTAMP, default=func.now(),
        onupdate=func.now(), server_default=text("CURRENT_TIMESTAMP"))

class rProductReviewsHistoricalDetails(db.Model):
    __tablename__ = 'r_product_reviews_historical_details_list'
    id = db.Column(Integer, primary_key=True)
    r_id = db.Column(String(64), ForeignKey('r_product_list.r_id'), 
nullable=False)
    r_product = relationship("rProduct", uselist=False, foreign_keys=[r_id])
    total_reviews = db.Column(db.Integer())
    average_rating = db.Column(db.Float())

    time_updated = db.Column(TIMESTAMP, default=func.now(),
        onupdate=func.now(), server_default=text("CURRENT_TIMESTAMP"))

 

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to