SqlAlchemy “Too many connections”

Posted quietwalk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SqlAlchemy “Too many connections”相关的知识,希望对你有一定的参考价值。

 

 File "C:UsersuserAppDataLocalProgramsPythonPython36libsite-packagespymysqlconnections.py", line 393, in check_error
    err.raise_mysql_exception(self._data)
  File "C:UsersuserAppDataLocalProgramsPythonPython36libsite-packagespymysqlerr.py", line 107, in raise_mysql_exception
    raise errorclass(errno, errval)
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1040, Too many connections) (Background on this error at: http://sqlalche.me/e/e3q8)

Process finished with exit code 1

 

 

1、pandas dataframe to_sql()

#连接数据库
def getEngine():
    engine = create_engine(mysql://root:[email protected]/databaseName?charset=utf8mb4,echo=False)
    #print(engine)
    return engine
def getSession():
    engine = getEngine()
    BaseMode.metadata.create_all(engine)
    Session = sessionmaker(bind=engine)
    session = Session()
    return session

 

def get_stock_daily(ts_code, start_date,end_date,startTime):
    # print( ts_code + "  " + str(start_date) + "  " + str(end_date))
    api = ts.pro_api(token)

    try:
        df = ts.pro_bar(pro_api=api, ts_code=ts_code, start_date=start_date, end_date=end_date)  # 【获取数据】
        if df is None:
            print("没有获取到数据")
            return None

        print("data count: " + str(len(df)))
        df[trade_date] = pd.to_datetime(df[trade_date])  # 交易日期字符串转换成日期格式

        conn = cheDbUtil.getEngine()
        try:
            df.to_sql(b_stock_daily, con=conn, if_exists=append, index=False)  # replace/append/fail 【save】
        except Exception as e:
            traceback.print_exc()
            print("get_stock_daily() in BaaBusiniessPro.py XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
            return None
        finally:
            conn.dispose()
    except Exception as e:
        sleepNeed = 60
        print("Start to sleep  " + str(sleepNeed) + )
        print("当前耗时: " + str(round((time.time() - startTime), 2) / 60) +  分钟)
        time.sleep(sleepNeed)  # 休眠 ? 秒

2、SqlAlchemy  操作 mysql

#获取日行情最后一条记录的日期
def getMaxTradeDateForStockDaily(ts_code):
    try:
        session = getSession()
        rows = session.query(func.max(StockDaily.trade_date)).filter(StockDaily.ts_code == ts_code).one()
        # print(str(len(rows)))
        # print(type(rows))
        # print(str(rows))
        if rows is not None and len(rows) == 1:
            return rows[0]
        return None
    except Exception as e:
        traceback.print_exc()
        print("getMaxTradeDateForStockDaily() XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
        return None
    finally:
        session.close()

 

以上是关于SqlAlchemy “Too many connections”的主要内容,如果未能解决你的问题,请参考以下文章

flask-sqlalchemy

sqlalchemy.exc.NoSuchModuleError:无法加载插件:sqlalchemy.dialects:postgres

SQLAlchemy 是不是从同一连接重置 SQLAlchemy 会话之间的数据库会话?

SQLAlchemy使用笔记--SQLAlchemy ORM

SQLAlchemy -- Python的SQLAlchemy和ORM

SQLAlchemy(一):SQLAlchemy去连接数据库ORM介绍将ORM模型映射到数据库中