aio-libs / aiomysql

aiomysql is a library for accessing a MySQL database from the asyncio
https://aiomysql.rtfd.io
MIT License
1.77k stars 257 forks source link

RuntimeError: Event loop is closed #992

Open 0x30 opened 1 month ago

0x30 commented 1 month ago

Describe the bug

There is no problem using asyncmy There is a "RuntimeError: Event loop is closed" error when using aiomysql

Am I using it incorrectly? What's wrong?

To Reproduce

import asyncio
from sqlmodel import SQLModel, Field
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmaker

class User(SQLModel, table=True):
    id: int = Field(default=None, primary_key=True)

DATABASE_URL = "mysql+asyncmy://root:@localhost:4000/test" ## ✅
DATABASE_URL = "mysql+aiomysql://root:@localhost:4000/test" ## ❌
engine = create_async_engine(DATABASE_URL, echo=True)

AsyncSessionLocal = sessionmaker(engine, expire_on_commit=False, class_=AsyncSession)

async def create_db_and_tables():
    async with engine.begin() as conn:
        await conn.run_sync(SQLModel.metadata.create_all)

async def main():
    await create_db_and_tables()

if __name__ == "__main__":
    asyncio.run(main())

Expected behavior

Don't happen RuntimeError: Event loop is closed

Logs/tracebacks

There is no problem using asyncmy
There is a "RuntimeError: Event loop is closed" error when using aiomysql

Python Version

Python 3.12.7

aiomysql Version

0.2.0

PyMySQL Version

1.1.0

SQLAlchemy Version

2.0.36

OS

macOS

Database type and version

8.0.11-TiDB-v7.5.1

Additional context

No response

Code of Conduct

Ro0tk1t commented 2 weeks ago

same problem, is there any solution?