小编rhe*_*dak的帖子

SQLAlchemy bulk_insert_mappings():无法获取表“test”的映射器

我一直在尝试使用 sqlalchemy 的 bulk_insert_mappings。我知道我可以创建会话并连接到数据库。我已经初始化了我的引擎,但我似乎无法从表中获得我需要的映射器。

from sqlalchemy import create_engine
from sqlalchemy.orm.session import sessionmaker,Session
from sqlalchemy_utils import get_mapper

engine = create_engine('mysql+pymysql://{}:{}@IP:PORT/'.format(USER,PW)) # removed my config here
connection = engine.connect()
m = MetaData(bind=engine,schema='test')
m.reflect()

Session = sessionmaker(bind=engine)
s = Session()
s.bulk_insert_mappings(get_mapper(m.tables['test.test']), pd.DataFrame({'a':['a','b','c']}).to_dict(orient="records"))
s.commit()
s.close()
Run Code Online (Sandbox Code Playgroud)

我最近在这个问题上发现了一堆相关的问题

SQLAlchemy 从 Table 对象中获取 Mapper 对象(来自 Metadata 或 Session 或其他)

但 sqlalchemy_utils.get_mapper 提出:

“ValueError: 无法获得表 'test' 的映射器。”

sqlalchemy.orm.mapperlib._mapper_registry似乎是空的。也许是因为我没有将它绑定到我的引擎上。但不知道该怎么做。

PS:test是一个非常简单的TEXT类型的单列表

这是 m.tables['test.test'] 的输出

Table('test', MetaData(bind=Engine(mysql+pymysql://USER:***@IP:PORT/)), Column('a', TEXT(), table=<test>), schema='test')
Run Code Online (Sandbox Code Playgroud)

python mysql sqlalchemy mariadb sqlalchemy-utils

2
推荐指数
1
解决办法
2740
查看次数

标签 统计

mariadb ×1

mysql ×1

python ×1

sqlalchemy ×1

sqlalchemy-utils ×1