Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

173
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda