Gino: Is there IN cause in gino

Created on 24 Nov 2018  路  4Comments  路  Source: python-gino/gino

  • GINO version: 0.8.0
  • Python version: 3.7.0
  • asyncpg version: 0.17.0
  • aiocontextvars version: 0.2.0
  • PostgreSQL version: 10

Description

My model definition are:

class Tag(BaseClass):
    __tablename__ = 'tags'

    tag_name = db.Column(db.String(64), nullable=False)

    def __str__(self):
        return f'{self.tag_name}'


class Tweet(BaseClass):
    __tablename__ = 'tweets'

    msg = db.Column(db.String(280), nullable=False)
    user_id = db.Column(None, db.ForeignKey('users.id'))

    def __str__(self):
        return f'{self.user_id} -> {self.msg}'


class TagTweet(BaseClass):
    __tablename__ = 'tag_tweet'

    tag_id = db.Column(db.ForeignKey('tags.id'))
    tweet_id = db.Column(db.ForeignKey('tweets.id'))

    def __str__(self):
        return f'{self.tag_id} - {self.tweet_id}'

Now, I have a post method to fetch all data which has specific tag
My query is:

select * from tweets where tweets.id IN(select tweet_id from tag_tweet where tag_tweet.tag_id = (SELECT tags.id FROM tags WHERE tags.tag_name='test'))

I want to run this query using gino
I there any way to fetch data using gino without raw query?
How do I do that?

question

All 4 comments

A literal translation could be

q = db.select(
    [Tweet.id, Tweet.msg, Tweet.user_id]
).where(
    Tweet.id.in_(
        db.select([TagTweet.tweet_id]).where(
            TagTweet.tag_id ==
            db.select([Tag.id]).where(Tag.tag_name == tag_name)
        )
    )
)
print(await q.gino.model(Tweet).first())

thanks a lot , how do I set limit and offset to use pagination
for example same as this sql command:

SELECT * FROM tweets WHERE tweets.id IN(SELECT tweet_id FROM tag_tweet WHERE tag_tweet.tag_id = (SELECT tags.id FROM tags WHERE tags.tag_name='test')) ORDER BY created_at limit 10 offset 1

Thanks

Was this page helpful?
0 / 5 - 0 ratings

Related issues

paulin-mipt picture paulin-mipt  路  4Comments

retnikt picture retnikt  路  6Comments

myraygunbarrel picture myraygunbarrel  路  3Comments

Pehat picture Pehat  路  3Comments

aprilmay picture aprilmay  路  3Comments