【问题标题】:How to handle an AttributeError(key) using a automap_base in Sqlalchemy? [duplicate]如何在 Sqlalchemy 中使用 automap_base 处理 AttributeError(key)? [复制]
【发布时间】:2017-12-22 09:16:24
【问题描述】:

请帮忙解决这个错误 - AttributeError(key):

  File "pivot_table_measurements.py", line 1, in <module>
    from database import *
  File "/home/dedeco/Projetos/bigclima-project/database.py", line 24, in <module>
    MeasureRanges = Base.classes.measure_ranges
  File "/home/dedeco/craw/lib/python3.5/site-packages/sqlalchemy/util/_collections.py", line 212, in __getattr__
    raise AttributeError(key)
AttributeError: measure_ranges

数据库.py:

from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import Session
from sqlalchemy import create_engine
from sqlalchemy.orm.exc import MultipleResultsFound, NoResultFound
import string
from decimal import Decimal

ECHO = False
AUTOFLUSH = False

Base = automap_base()

engine = create_engine('postgresql://user:pass@localhost:5432/clima', echo=ECHO)

Base.prepare(engine, reflect=True)

Country = Base.classes.countries
State = Base.classes.states
City = Base.classes.cities
Measurement = Base.classes.measurements
MeasurementHourly = Base.classes.measurements_hourly
MeasureRanges = Base.classes.measure_ranges
Parameter = Base.classes.parameters
WeatherStation = Base.classes.weather_stations

session = Session(engine, autoflush=AUTOFLUSH)

表 measure_ranges 已在数据库中退出,但我不知道为什么会收到此错误。当我删除此行时(MeasureRanges = Base.classes.measure_ranges)有效,因此我认为该错误与此表中的某些问题有关。

【问题讨论】:

    标签: python orm sqlalchemy


    【解决方案1】:

    我决定分享这个问题和答案,因为这是一个基本的事情,但很难找到解决方案。

    出现问题是因为我没有在此表上创建主键,并且无法自动映射到类。

    查看文档:

    可行,我们的意思是要映射一个表,它必须指定一个 首要的关键。此外,如果该表被检测为纯 其他两个表之间的关联表,它不会直接 映射,并将改为配置为之间的多对多表 两个引用表的映射。

    See more details here: SQLAlchemy 1.2 Documentation - Autoamp

    【讨论】:

      猜你喜欢
      • 2018-08-09
      • 2014-02-01
      • 2019-04-25
      • 2018-05-19
      • 1970-01-01
      • 2020-01-22
      • 2022-07-19
      • 2017-05-04
      • 1970-01-01
      相关资源
      最近更新 更多