Hello! Thank you for GINO, it's great and very useful.
I've tried to execute a simple JOIN but failed.
#! /usr/bin/env python
import asyncio
import gino
db = gino.Gino()
class User(db.Model):
__tablename__ = "users"
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(80), nullable=False)
class Book(db.Model):
__tablename__ = "books"
__table_args__ = tuple([
db.ForeignKeyConstraint(['user_id'], ['users.id']),
])
id = db.Column(db.Integer(), primary_key=True)
user_id = db.Column(db.Integer(), nullable=False)
name = db.Column(db.String(80), nullable=False)
async def test_join(db_url):
db.bind = await db.create_pool(db_url)
query = db.select(User).join(Book)
print(query)
result = await query.gino.all()
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(test_join("postgresql://[email protected]/test_join"))
loop.close()
Output:
(SELECT users.id AS id, users.name AS name
FROM users) JOIN books ON id = books.user_id
Traceback (most recent call last):
File "./main.py", line 31, in <module>
loop.run_until_complete(test_join("postgresql://[email protected]/test_join"))
File "/usr/lib/python3.6/asyncio/base_events.py", line 467, in run_until_complete
return future.result()
File "./main.py", line 27, in test_join
result = await query.gino.all()
AttributeError: 'Join' object has no attribute 'gino'
Please tell me how do I perform JOIN on these tables?
Thanks! Please see #112 for more information. Simply change your query to this will do:
query = User.join(Book).select()
Or if you need user values only:
query = User.query.select_from(User.join(Book))
Or specifying columns:
```python
query = db.select([User.name, Book.name]).select_from(User.join(Book))
````
Thank you for rapid response. Despite you suggest solution different from the one from #112, it looks more beautiful and it works.
Yeah @brncsk's fixes in #113 get the credits.
Most helpful comment
Thanks! Please see #112 for more information. Simply change your query to this will do:
Or if you need user values only:
Or specifying columns:
```python
query = db.select([User.name, Book.name]).select_from(User.join(Book))
````