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
zyxbcde
V2EX  ›  Python

想问下 sqlalchemy1.4 的异步模式有人试过么

  •  
  •   zyxbcde · 241 天前 via Android · 1018 次点击
    这是一个创建于 241 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这里是一个被开发逼着写代码的菜鸡商务。

    sqlalchemy 出了 1.4 以后想试试异步模式,就找了个 mysql 数据库写了几行测试。

    import asyncio

    from sqlalchemy.ext.asyncio import create_async_engine

    from sqlalchemy.ext.asyncio import AsyncSession

    async def main():

    engine = create_async_engine("mysql+aiomysql://root:[email protected]:3333/test")
    
    session = AsyncSession(engine)
    
    await session.execute("select * from students")
    
    await session.close()
    

    if name == 'main':

    asyncio.run(main())
    

    然后在 aiomysql 连接关闭的时候报错 event loop is closed,我感觉我的代码写的没问题啊,就这么三四行,然后我还不甘心把官方文档里的例子改成 aiomysql 丢进去还是一样的错。

    想请试过的大神给指导下

    4 条回复    2021-04-02 19:29:18 +08:00
    Te11UA
        1
    Te11UA   241 天前
    目测用的是 Windows
    Linux 环境应该不会了
    Wincer
        2
    Wincer   241 天前
    没用过异步模式,但是你的写法似乎与官方文档的不太一致。https://docs.sqlalchemy.org/en/14/orm/extensions/asyncio.html,文档里是使用 async with async_session() as session: 这样来创造 session 的,你可以按文档里说的试试
    zyxbcde
        3
    zyxbcde   240 天前 via Android
    @Te11UA 怀疑过,我甚至把 python 删了重装了一遍,等回公司试试。
    zyxbcde
        4
    zyxbcde   240 天前 via Android
    @Wincer 异步模式刚出的,我也是试试,不过这里跟 with 没关系,用 with 也是一样的错。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3912 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 09:28 · PVG 17:28 · LAX 01:28 · JFK 04:28
    ♥ Do have faith in what you're doing.