Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

177
Views
SqlModel: Fastapi AttributeError: tipo de objeto 'AddressBaseCore' no tiene atributo '__config__'

Soy nuevo en fastapi y SQLModel, estaba tratando de implementar un código básico de mi lib existente, tengo una clase de dirección

me gusta

 @dataclass class Address(DataClassJsonMixin): addr1: str city: str province: str

Simplemente quiero crear una clase en SQLModel que se conecte a DB. Solo he agregado una nueva ID de columna aquí. Recibo el siguiente error donde no estoy seguro de por qué solicita un atributo de configuración.

 class AddressMaster(SQLModel, Address): id: int = Field(default=None, primary_key=True) AttributeError: type object 'Address' has no attribute '__config__'

Está fallando en config = getattr(base, "__config__") que tiene información que no puedo comprender.

 # Only one of the base classes (or the current one) should be a table model # this allows FastAPI cloning a SQLModel for the response_model without # trying to create a new SQLAlchemy, for a new table, with the same name, that # triggers an error

prueba 1:

 from sqlmodel import SQLModel, Field from ...core import Address from dataclasses import dataclass @dataclass class AddressDB(Address, SQLModel): pass # END AddressDB class AddressMaster(AddressDB, table=True): """ Address Master Table """ id: int = Field(default=None, primary_key=True) # END AddressMaster

Creación de objetos

 objAd = AddressMaster.from_dict({"addr1": "Kashmir", "city": "Srinagar", "province": "Kashmir"})
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Hay un error en la semántica de su clase AdressMaster . Si está destinado a ser una clase relacionada con su base de datos. Luego, debe especificar en el primer parámetro la clase que hereda de un modelo SQL o de SQLmodel (y en este caso, debe volver a escribir cada atributo de su modelo dentro de esta clase) directamente. Y hay que pasarle el argumento table=True

 class AddressMaster(Address, table=True): id: int = Field(default=None, primary_key=True) # Here the attributes will be inherited from your Adress class # (provided that this one in its parentage is an inheritance link with a modelSQL)

O

 class AddressMaster(SQLModel, table=True): id: int = Field(default=None, primary_key=True) addr1: str city: str province: str # Here, the class is independent from the other pydantic # validation models since it inherits directly from SQLModel

En Try 1: está tratando de pasar dos parámetros a su clase AddressDB , uno de los cuales es un SQLModel . Sin embargo, SQLModel permite anular SQLAlchemy y acepta como parámetro solo modelos de SQLAlchemy o Pydantic. Durante la inicialización, pasa por los argumentos pasados en el parámetro e intenta llamar al método o atributo Config que existe en los modelos pydantic y SQLAlchemy. Esta es la fuente de su error ya que pasa en el parámetro un DataClassJsonMixin que no tiene ningún método o atributo de Config . Este es el origen de tu error.

Cómo resolverlo. Solo tiene que no llamar a DataClassJsonMixin , que me parece codificar/decodificar datos JSON. Sin embargo, este es un comportamiento básico de Pydantic (que se usa detrás de SQLModel).

Entonces, si usa el primer método que se muestra arriba (es decir, heredado de un SQLModel), solo tiene que colocar sus campos de validación dentro AddressDB y hacer que esta clase herede solo de SQLModel

 class AddressDB(SQLModel): addr1: str city: str province: str
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!