trinodb / trino-python-client

Python client for Trino
Apache License 2.0
309 stars 151 forks source link

Support Execute Chaining #279

Closed bendemott closed 1 year ago

bendemott commented 1 year ago

Describe the feature

Would it make more sense to return self from cursor.execute instead of TrinoResult

This would allow you to chain fetch operations

value = cursor.execute('SELECT 1').fetchone()[0]

In addition, __iter__ and rowcount can be implemented on the cursor itself - this seems to be how it is commonly done.

So with return self and __iter__ implemented the following would still be possible for convenience:

for row in cursor.execute('select * from system.runtime.nodes'):
    print(row) 

This is the behavior of psycopg3 The Python DBAPI2 spec doesn't specify the return value of execute so it's up to the driver to decide, but it is common in quite a few Python DBAPI2 drivers.

Describe alternatives you've considered

No response

Are you willing to submit PR?

hovaesco commented 1 year ago

That's a great addition, @bendemott are you willing to submit a PR for this?

bendemott commented 1 year ago

That's a great addition, @bendemott are you willing to submit a PR for this?

Yeah, I'll submit one soon, thanks.