Mysql
 sql >> база данни >  >> RDS >> Mysql

Грешка в SQLAlchemy MySQL сървърът е изчезнал

SQLAlchemy вече има страхотно описание как можете да използвате ping, за да бъдете песимистични относно свежестта на вашата връзка:

http://docs.sqlalchemy.org/en /latest/core/pooling.html#disconnect-handling-pessimistic

От там,

from sqlalchemy import exc
from sqlalchemy import event
from sqlalchemy.pool import Pool

@event.listens_for(Pool, "checkout")
def ping_connection(dbapi_connection, connection_record, connection_proxy):
    cursor = dbapi_connection.cursor()
    try:
        cursor.execute("SELECT 1")
    except:
        # optional - dispose the whole pool
        # instead of invalidating one at a time
        # connection_proxy._pool.dispose()

        # raise DisconnectionError - pool will try
        # connecting again up to three times before raising.
        raise exc.DisconnectionError()
    cursor.close()

И тест, за да се уверите, че горното работи:

from sqlalchemy import create_engine
e = create_engine("mysql://scott:[email protected]/test", echo_pool=True)
c1 = e.connect()
c2 = e.connect()
c3 = e.connect()
c1.close()
c2.close()
c3.close()

# pool size is now three.

print "Restart the server"
raw_input()

for i in xrange(10):
    c = e.connect()
    print c.execute("select 1").fetchall()
    c.close()


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Trigger след актуализация само ако редът е променен

  2. Как първо да използвате кода на MySql и Entity Framework 4.1

  3. Ако таблица съществува, пуснете таблицата, тогава я създайте, ако не съществува, просто я създайте

  4. Нечувствителна заявка за търсене в MySQL

  5. Създаване на mysql таблица с изричен набор от символи по подразбиране, какво ще стане, ако не го направя?