Ben veritabanı (MS SQL Server 2008 R2) ile çalışmak için piton + microsoft'un pwrtest utilityHazırda bekletme (S4) (veya bağlantı kesildi) sonra MS SQL ile yeniden nasıl?
Ayrıca kullanıyorum sqlalchemy (ORM) kullanarak bazı hazırda bekleme testleri çalıştırıyorum.
Uzak sql sunucusuna bağlandım ve her şey para cezalarıyla çalışıyor, ancak bilgisayar hazırda bekleme moduna (S4) geçtikten sonra sql sunucusu bağlantıyı kapatıyor (yönetim stüdyosunda "Activity monitor" olarak görüyorum).
benim pc kış uykusu için geri alır ve ben hata " DBAPIError olsun komut dosyası ile devam: (Hata) ('08S01', '[08S01] [Microsoft] [ODBC SQL Server sürücüsü] İletişim bağlantısı hatası (0) (SQLExecDirectW) ') "
Ben bildiğim kadarıyla bağlantı artık yok olduğunu fark edemiyor sqlalchemy
anladığımız kadarıyla, Ancak pool_recycle
engine = create_engine(settings.sql_engine, echo=True, pool_recycle=1)
kullanmayı denedik. Nasıl Veritabanı yeniden bağlanmayı o da
işe yaramadı
Dispose of the connection pool used by this Engine.
A new connection pool is created immediately after the old one has been disposed. This new pool, like all SQLAlchemy connection pools, does not make any actual connections to the database until one is first requested.
Ama:
Ben de engine.dispose()
kullanmaya çalıştı ve geçerli havuzu damla gerekir documentation göre ettik?
Teşekkürler!
kodu:
#module db.py:
from sqlalchemy.ext.declarative import declarative_base , declared_attr
from sqlalchemy import *
from sqlalchemy.orm import sessionmaker, relationship, backref
from sqlalchemy.orm.exc import *
Base = declarative_base()
class Drive(Base):
__tablename__ = "drives"
id = Column(Integer, primary_key=True)
isPhysical = Column(Boolean)
devicePath = Column(String(100))
name = Column(String(10))
encrypted = Column(Boolean, default=False)
size = Column(BigInteger)
def __init__(self):
pass
sql_engine = 'mssql+pyodbc://Tester:[email protected]/Automation'
engine = create_engine(sql_engine, echo=True)
Session = sessionmaker(bind=engine)
Base.metadata.create_all(engine)
fiili çağrı:
#hibernation.py
from db import *
import subprocess
command = r"pwrtest /sleep /s:4 /h:n /c:1"
out = subprocess.check_output(command)
# hibernation occurs
session = Session()
session.query(Drive).all()
teşekkürler. Ve gerçekten de dinleyici işe yaradı, ancak tüm taahhütler için fazladan sorgular getiriyor. İhtiyacım olan şey, belirli bir durumdan sonra bağlantıyı yeniden kurmak için tek seferlik bir şey. Şimdiye kadar yeni motorda 'create_engine' ve 'sessionmaker' kelimelerini tekrar aramaktan daha iyi bir şey bulamadım :( –
'exc.isconnectionError() 'gibi bir şeyi tetiklemek için bir yol olup olmadığını merak ediyorum, yani motor –
Alex, iyi bir çözüm buldunuz mu? Ağ sorunlarından şüphelendiğimiz kurulumlarımızdan biriyle aynı sorunu yaşıyorum: –