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”的主要内容,如果未能解决你的问题,请参考以下文章
sqlalchemy.exc.NoSuchModuleError:无法加载插件:sqlalchemy.dialects:postgres
SQLAlchemy 是不是从同一连接重置 SQLAlchemy 会话之间的数据库会话?
SQLAlchemy使用笔记--SQLAlchemy ORM