2019-06-12:真 有用的是这个:

https://blog.csdn.net/weiwangchao_/article/details/80185009

1、在使用 create_engine创建引擎时,如果默认不指定连接池设置的话,一般情况下,SQLAlchemy会使用一个 QueuePool绑定在新创建的引擎上。并附上合适的连接池参数。

2、在这种情况下,当你使用了session后就算显式地调用session.close(),也不能把连接关闭。连接会由QueuePool连接池进行管理并复用。

3、如果想禁用SQLAlchemy提供的数据库连接池,只需要在调用create_engine是指定连接池为NullPool,SQLAlchemy就会在执行session.close()后立刻断开数据库连接。当然,如果session对象被析构但是没有被调用session.close(),则数据库连接不会被断开,直到程序终止。

from sqlalchemy.pool import NullPool

#连接数据库
def getEngine():
engine = create_engine('mysql://root:123456@127.0.0.1/baa?charset=utf8mb4', poolclass=NullPool, echo=False)
#print(engine)
return engine def getSession():
engine = getEngine()
BaseMode.metadata.create_all(engine)## 数据库生成表
# Session = sessionmaker(bind=engine)
# session = Session() DBSession = sessionmaker(bind=engine)
session = DBSession() return session
 File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\pymysql\connections.py", line 393, in check_error
err.raise_mysql_exception(self._data)
File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\pymysql\err.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:123456@127.0.0.1/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”的更多相关文章

  1. sqlalchemy学习

    sqlalchemy官网API参考 原文作为一个Pythoner,不会SQLAlchemy都不好意思跟同行打招呼! #作者:笑虎 #链接:https://zhuanlan.zhihu.com/p/23 ...

  2. Python操作Redis、Memcache、RabbitMQ、SQLAlchemy

    Python操作 Redis.Memcache.RabbitMQ.SQLAlchemy redis介绍:redis是一个开源的,先进的KEY-VALUE存储,它通常被称为数据结构服务器,因为键可以包含 ...

  3. 3.SQLAlchemy文档-SQLAlchemy Core(中文版)

    这里的文描述了关于SQLAlchemy的的SQL渲染引擎的相关内容,包括数据库API的集成,事务的集成和数据架构描述服务.与以领域为中心的ORM使用模式相反,SQL表达式语言提供了一个数据构架为中心的 ...

  4. SQLAlchemy on the way

    SQLAlchemy Trial This is a great ORM ( Object-Relational Mapper ) which is compatible with  xxxx and ...

  5. Python 之路:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    一.Memcached Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负债.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速 ...

  6. python 全栈开发,Day142(flask标准目录结构, flask使用SQLAlchemy,flask离线脚本,flask多app应用,flask-script,flask-migrate,pipreqs)

    昨日内容回顾 1. 简述flask上下文管理 - threading.local - 偏函数 - 栈 2. 原生SQL和ORM有什么优缺点? 开发效率: ORM > 原生SQL 执行效率: 原生 ...

  7. 深入研究sqlalchemy连接池

    简介: 相对于最新的MySQL5.6,MariaDB在性能.功能.管理.NoSQL扩展方面包含了更丰富的特性.比如微秒的支持.线程池.子查询优化.组提交.进度报告等. 本文就主要探索MariaDB当中 ...

  8. sqlalchemy 简介

    #! /usr/bin/env python3 # -*- coding:utf-8 -*- #use SQLAlchemy #ORM:Object-Relational Mapping ,把关系数据 ...

  9. sqlalchemy学习-- 重要参数

    Base = declarative_base 基类: 1.存储表 2.建立class-Table 的映射关系 engine = create_engine('mysql://root:root@lo ...

随机推荐

  1. Linux Centos7安装最新anslib

    一.添加最新epel源 yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 二.添加最 ...

  2. 006 python操作符

    一:数值操作符 1.操作符 2.不同点 上面有了一个说法,这个 / 与其他的编程不同. 这个是精确的除法. 3.连续赋值 这种用法,第一次遇见,就记录下来. 4.注意点 重要的是要注意优先级的问题 二 ...

  3. Linux下C语言进程通讯编程

    代码: #include <stdio.h> #include <stdlib.h> #include <sys/shm.h> /*************基本的函 ...

  4. 搭建TensorFlow中碰到的一些问题(TensorBoard不是内部或外部指令也不是可运行的程序)~

    一.windows10环境+pip python软件包(最新版)+Pycharm软件(过段时间在弄下CUDA和GPU吧) 直接使用pip指令来安装tensorflow软件(如果很久没有更新pip软件包 ...

  5. 在controller中将timestamp类型的数据通过toString()方法变成字符串

    然后在miniui里面将dateFormat="yyyy-MM-dd",变成想要的格式.

  6. go编译go-gtk,出现invalid flag in pkg-config --libs: -Wl,-luuid提示

    go编译go-gtk     使用go编译go-gtk,直接编译会出现错误:   pkg-config --cflags -- gdk-2.0 gthread-2.0   pkg-config --l ...

  7. 连接mysql数据库时提示2003 can't connect to MySQL server on ip(10060)的解决办法

    今天部署 JavaWeb 项目到云服务器,突然出现can t connect to MySQL server on ip的问题 经过了一些检查,认为很有可能是防火墙的原因.下面是检查的具体操作: 因为 ...

  8. hdu1285 确定比赛名次【拓扑排序】

    题目链接 确定比赛名次                                         Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  9. Django 学习第七天——Django模型基础第二节

    User 是自己创建的模型类,等于数据库中的表 常用的查询方法: all():获取所有数据: User.objects.all() first():获取第一条数据: User.objects.firs ...

  10. Xamarin Essentials教程磁力计Magnetometer

    Xamarin Essentials教程磁力计Magnetometer   磁力计也叫地磁.磁感器,可用于测试磁场强度和方向.在手持设备中,通过磁力计可以计算设备的左右.前后倾斜角度,广泛应用于手机各 ...