Queries hang when accessing Oracle via ODBC and Python
I had a very similar problem where I had a query that would run, return 541 rows (every time) and then just hang. Wireshark looked like I was sending a packet and just not getting any response. 

While troubleshooting the issue I added an order by clause to the query trying to see if I could find a potentially problematic record, but then the query executed just fine. 

I don't know why the order by clause fixed it and I don't care too much to find out. Hopefully this simple solution will work for others too!