You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLAlchemy AutoMap反射MS Access数据库出现AttributeError,表已定义主键

问题根因

报错日志中的SAWarning已经明确了核心问题:Access ODBC驱动不支持ODBC标准的SQLPrimaryKeys接口,哪怕你在Access本地已经为ref_personen表设置了主键,SQLAlchemy的反射逻辑也无法识别到主键信息。而SQLAlchemy Automap扩展默认只会为识别到主键的表自动生成ORM映射类,因此Base.classes中不存在ref_personen对应的属性,最终抛出AttributeError。

解决方案

你只需要手动为需要映射的表指定主键字段,其余字段仍可自动反射获取,无需手动声明全量字段:

from sqlalchemy import Table, Column, Integer
from sqlalchemy.ext.automap import automap_base

Base = automap_base()
# 请替换下面代码中的主键字段名、字段类型为你表中实际的主键配置
personen_table = Table(
    'ref_personen', Base.metadata,
    Column('你的主键字段名', Integer, primary_key=True), # 示例:如果主键是名为id的整数字段就填这行
    autoload_with=engine
)

# 执行prepare生成映射类
Base.prepare()

# 现在就可以正常获取映射类了
Personen = Base.classes.ref_personen
session = Session(engine)
额外排查建议

如果调整后仍然报错,可以执行以下代码确认反射到的所有表名,排查是否存在表名拼写、大小写转换问题:

print(Base.classes.keys())

内容的提问来源于stack exchange,提问作者linus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 12:36:01