MySQL should be completely reliable -- we haven't seen any outages over the last 24 hours.
One difference between localhost and our system here that you might be seeing is the connection timeout. MySQL always times out idle connections after a certain amount of time. I think the default value is quite high -- maybe eight hours -- but on PythonAnywhere, in order to support lots of users, it's five minutes. (This has the added advantage that if you have a connection management bug, you find out pretty much right away, rather than eight hours later after you've gone to bed...)
If you're using a DB connection manager in your code (say, like SQLAlchemy) then that doesn't really matter -- so long as the connection manager is correctly configured (eg. "app.config["SQLALCHEMY_POOL_RECYCLE"] = 299
") then you'll have no problems.
But if you're writing your own SQL code manually, or haven't set the POOL_RECYCLE setting, then you'll get a "OperationalError 2006, 'MySQL server has gone away'" error each time the connection times out.
For manual code, the solution is to close your connections at the end of each view.