关于aiomysql配合sqlalchemy导入表结构的问题

发布于 2022-09-07 00:00:05 字数 886 浏览 15 评论 0

import asyncio
import sqlalchemy as sa

from aiomysql.sa import create_engine


@asyncio.coroutine
def go():
    engine = yield from create_engine(user='root',db='test',host='127.0.0.1',password='root')

    metadata = sa.MetaData(bind=engine)
    tbl = sa.Table('tbl', metadata
        ,sa.Column('id', sa.Integer, primary_key=True)
        ,sa.Column('val', sa.String(255))
    )
    with (yield from engine) as conn:
        res = yield from conn.execute(tbl.select())
        for row in res:
            print(row.id, row.val)

asyncio.get_event_loop().run_until_complete(go())


上述是aiomysql所给出的官方示例,我想问的是,对于每一张表在上述的案例中都要使用sa.Table()方法进行数据表的映射,并且在这个映射中必须要列出所有的数据列。
在单独使用sqlalchemy(不使用aiomysql)的时候可以通过如下方法导入

alphaTable = Table('alpha', metadata, autoload=True)

但是配合上aiomysql之后会出现报错,想问有没有什么办法是可以不用自己枚举信息列直接通过某些方法导入?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北方的巷 2022-09-14 00:00:05

额外创建一个普通的 SQLAlchemy engine,然后用 autoload_with=blocking_engine 替代 autoload=True。因为表映射应该只发生一次,所以此时不使用异步应该可以接受。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文