我使用的是aiohttp
和sqlalchemy
,我创建了一个单例,在需要SQLAlchemy实例时可以帮助我连接(代码如下).
12月11日09:35:29 ip xxx xxx xxx gunicorn[16513]:sqlalchemy.exc.StatementError:(sqlalchemy.exc.InvalidRequestError)在回滚无效事务之前无法重新连接[SQL:'…\n从…\n此处…=%(用户名\u 1)s\n限制%(参数\u 1)s'][参数:[{}]```
有没有办法修复当前的代码?
CONNECTION_DETAILS = {
'driver': 'pymysql',
'dialect': 'mysql',
'host': os.environ.get('HOST'),
'port': 3306,
'user': 'master',
'password': os.environ.get('PASSWORD'),
'database': 'ourdb',
'charset': 'utf8'
}
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance:
con_str = '{dialect}+{driver}://{user}:{password}@' \
'{host}:{port}/{database}?charset={charset}'\
.format(**cls.CONNECTION_DETAILS)
try:
engine = sqlalchemy.create_engine(con_str)
Session = scoped_session(sessionmaker(bind=engine))
session = Session() # Create the ORM handle
except sqlalchemy.exc.OperationalError:
logger.exception('Establishing database connection error.')
cls._instance = super().__new__(cls)
logger.debug("Returning database's session.")
cls._instance.session = session
# Initializing tables
cls._instance.Users = Users
cls._instance.Services = Services
cls._instance.APIKeys = APIKeys
return cls._instance