V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Raul7
V2EX  ›  Python

求助各位大佬:一个关于 sqlalchemy 的报错(mysql.connector.errors.OperationalError)

  •  
  •   Raul7 · 2019-11-13 09:57:08 +08:00 · 3432 次点击
    这是一个创建于 1873 天前的主题,其中的信息可能已经有所发展或是发生改变。

    直接先贴代码吧:

     for result in nminfo['scan'].values():
     	if result['status']['state'] == "up":
     		ip = result['addresses']['ipv4']
            host_os = "xxx"
    	# 位置 1
            host_assets_id = db.session.query(HostAsset.host_id).filter(HostAsset.host_ip == ip).first()
            if host_assets_id:
                query_host_id = host_assets_id[0]
                # 位置 2
                HostAsset.query.filter_by(host_id=query_host_id).update({'host_os': host_os})
                HostAssetsHistory.query.filter_by(host_id=query_host_id,                     task_stream_id=self.task_stream_id).update({'host_os': host_os})
                db.session.commit()
            else:
                pass
    

    我这个 for 是循环一个特别大的 json 文件内容,跟数据库的操作主要是位置 1 和位置 2。

    位置 1 是一个根据条件查询 id 的操作,为了在位置 2 中入其他库。

    数据量少的时候没问题,但是当 for 循环的数据非常多(几千条)的时候,就报错了:

    sqlalchemy.exc.OperationalError: (mysql.connector.errors.OperationalError) 
    

    在网上查解决方法,也尝试更改了 SQLALCHEMY_POOL_RECYCLE 等配置(改成与 mysql 的 wait_time 一致,或小于 wait_time ),但还是一样报错。

    5 条回复    2019-11-13 12:32:41 +08:00
    awanabe
        1
    awanabe  
       2019-11-13 10:25:27 +08:00
    Raul7
        2
    Raul7  
    OP
       2019-11-13 10:47:02 +08:00
    @awanabe 我是 flask 是在 db 初始化的时候设置吗? db = SQLAlchemy(session_options={"expire_on_commit": False})
    awanabe
        3
    awanabe  
       2019-11-13 10:52:53 +08:00
    @Raul7 #2 对
    Raul7
        4
    Raul7  
    OP
       2019-11-13 11:24:28 +08:00
    @awanabe 老哥能跟说下大概原理是什么吗?是什么问题导致的
    wangyzj
        5
    wangyzj  
       2019-11-13 12:32:41 +08:00
    是不是数据库最大提交那个参数
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2273 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:01 · PVG 00:01 · LAX 08:01 · JFK 11:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.