Another option would be to use the cursor option "WITH HOLD", when it gets into an sqlalchemy release:
https://bitbucket.org/zzzeek/sqlalchemy/issues/3667/support-postgresqls-with-hold-cursor
Note the caveat Scott mentions about Postgres materializing cursors on first commit.