Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Błąd SQLAlchemy Serwer MySQL zniknął

SQLAlchemy ma teraz świetny opis tego, jak używać pingowania, aby być pesymistycznie nastawionym do świeżości połączenia:

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

Stamtąd

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()

I test, aby upewnić się, że powyższe działa:

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. Jak zaimplementować system tagowania podobny do SO w php/mysql?

  2. mysql> tworzenie testu bazy danych; BŁĄD 1006 (HY000):Nie można utworzyć „testu” bazy danych (errno:2)

  3. Wybierz najbliższą wartość liczbową za pomocą zapytania MySQL

  4. Pojedyncze zapytanie Mysql dołącz do 3 tabeli i uzyskaj wszystkie wyniki

  5. mysql aktualizacja inkrementu int pole, które ma wartość null