Sqlalchemy foreign key problem - IMuriel - Apr-30-2019
hello im pretty stuck here, im trying to generate my models in order to autogenerate the tables and everyything works fine, but when i try to do something on my page im getting the following error
Error: File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask\app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask\app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask_restful\__init__.py", line 269, in error_router
return original_handler(e)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask_cors\extension.py", line 161, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask\app.py", line 1741, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask\_compat.py", line 34, in reraise
raise value.with_traceback(tb)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask\app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask\app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask_restful\__init__.py", line 269, in error_router
return original_handler(e)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask_cors\extension.py", line 161, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask\app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask\_compat.py", line 34, in reraise
raise value.with_traceback(tb)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask\app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask\app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask_restful\__init__.py", line 458, in wrapper
resp = resource(*args, **kwargs)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask\views.py", line 88, in view
return self.dispatch_request(*args, **kwargs)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask_restful\__init__.py", line 573, in dispatch_request
resp = meth(*args, **kwargs)
File "C:\Users\Ignacio Muriel\Desktop\programacion\comext\app\api\resources\data_stage.py", line 144, in post
if data_stage_id not in [x.id for x in DataStage.query.all()]:
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\flask_sqlalchemy\__init__.py", line 512, in __get__
mapper = orm.class_mapper(type)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\sqlalchemy\orm\base.py", line 441, in class_mapper
mapper = _inspect_mapped_class(class_, configure=configure)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\sqlalchemy\orm\base.py", line 420, in _inspect_mapped_class
mapper._configure_all()
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\sqlalchemy\orm\mapper.py", line 1337, in _configure_all
configure_mappers()
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\sqlalchemy\orm\mapper.py", line 3229, in configure_mappers
mapper._post_configure_properties()
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\sqlalchemy\orm\mapper.py", line 1947, in _post_configure_properties
prop.init()
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\sqlalchemy\orm\interfaces.py", line 196, in init
self.do_init()
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\sqlalchemy\orm\relationships.py", line 1861, in do_init
self._setup_join_conditions()
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\sqlalchemy\orm\relationships.py", line 1941, in _setup_join_conditions
can_be_synced_fn=self._columns_are_mapped,
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\sqlalchemy\orm\relationships.py", line 2246, in __init__
self._determine_joins()
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\sqlalchemy\orm\relationships.py", line 2361, in _determine_joins
consider_as_foreign_keys=consider_as_foreign_keys,
File "<string>", line 2, in join_condition
File "<string>", line 2, in _join_condition
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\sqlalchemy\util\deprecations.py", line 130, in warned
return fn(*args, **kwargs)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\sqlalchemy\sql\selectable.py", line 918, in _join_condition
a, a_subset, b, consider_as_foreign_keys
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\sqlalchemy\sql\selectable.py", line 999, in _joincond_scan_left_right
col = fk.get_referent(b)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\sqlalchemy\sql\schema.py", line 1880, in get_referent
return table.corresponding_column(self.column)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\sqlalchemy\util\langhelpers.py", line 855, in __get__
obj.__dict__[self.__name__] = result = self.fget(obj)
File "C:\Users\IGNACI~1\Desktop\PROGRA~1\comext\app\venv\lib\site-packages\sqlalchemy\sql\schema.py", line 2025, in column
tablekey,
sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 'clave_operacion_pedimento.clave_fecha_operacion_id' could not find table 'clave_fecha_operacion' with which to generate a foreign key to target column 'id'
so im not sure what is going on
here are my models, i have been trying a lot of things that i found on the web
from sqlalchemy import CHAR, Column, Date, ForeignKey, Integer, Numeric, String, text
from sqlalchemy.orm import relationship
from sqlalchemy.dialects.postgresql import BIT
from sqlalchemy.ext.declarative import declarative_base
from api.database import db, ma
from api.models import Model
Base = declarative_base()
metadata = Base.metadata
class ClaveDocumento(Model):
__tablename__ = 'clave_documento'
__table_args__ = {'schema': 'comext'}
__sequencename__ = __tablename__ + '_id_seq'
id = Column(
Integer,
db.Sequence(__sequencename__),
primary_key=True,
server_default=text("nextval('\""+__sequencename__+"\"'::regclass)")
)
clave = Column(String(25), nullable=False)
descripcion = Column(String(250), nullable=False)
def __init__(self, kwargs):
self.__dict__.update(kwargs)
class ClaveFechaOperacion(Model):
__tablename__ = 'clave_fecha_operacion'
__table_args__ = {'schema': 'comext'}
__sequencename__ = __tablename__ + '_id_seq'
id = Column(
Integer,
db.Sequence(__sequencename__),
primary_key=True,
server_default=text("nextval('\""+__sequencename__+"\"'::regclass)")
)
tipo = Column(String(15), nullable=False)
descripcion = Column(String(250), nullable=False)
def __init__(self, kwargs):
self.__dict__.update(kwargs)
class Regimen(Model):
__tablename__ = 'regimen'
__table_args__ = {'schema': 'comext'}
__sequencename__ = __tablename__ + '_id_seq'
id = Column(
Integer,
db.Sequence(__sequencename__),
primary_key=True,
server_default=text("nextval('\""+__sequencename__+"\"'::regclass)")
)
descripcion = Column(String(250), nullable=False)
def __init__(self, kwargs):
self.__dict__.update(kwargs)
class ClaveOperacionPedimento(Model):
__tablename__ = 'clave_operacion_pedimento'
__table_args__ = {'schema': 'comext'}
clave = Column(CHAR(1), primary_key=True)
fecha = Column(Date, nullable=False)
clave_fecha_operacion_id = Column(ForeignKey("clave_fecha_operacion.id"), nullable=False)
clave_fecha_operacion = relationship(ClaveFechaOperacion, foreign_keys=[clave_fecha_operacion_id])
def __init__(self, kwargs):
self.__dict__.update(kwargs)
def __repr__(self):
return '<Blog %r>' % self.name
class Pedimento(Model):
__tablename__ = 'pedimento'
__table_args__ = {'schema': 'comext'}
__sequencename__ = __tablename__ + '_id_seq'
id = Column(
Integer,
db.Sequence(__sequencename__),
primary_key=True,
server_default=text("nextval('\""+__sequencename__+"\"'::regclass)")
)
numero_pedimento = Column(String(7), nullable=False)
tipo_operacion = Column(CHAR(1), nullable=False)
fecha_pago_real = Column(Date, nullable=False)
tipo_cambio = Column(Numeric(9, 5))
patente = Column(String(4), nullable=False)
regimen_id = Column(ForeignKey('regimen.id'), nullable=False)
clave_documento_id = Column(ForeignKey("clave_documento.id"), nullable=False)
seccion_aduanera_id = Column(ForeignKey("seccion_aduanera.id"), nullable=False)
clave_operacion_pedimento_clave = Column(ForeignKey("clave_operacion_pedimento.clave"), nullable=False)
clave_documento= relationship('ClaveDocumento', foreign_keys="[clave_documento_id]")
clave_operacion_pedimento = relationship('ClaveOperacionPedimento', foreign_keys="[clave_operacion_pedimento_clave]")
regimen = relationship('Regimen', foreign_keys=[regimen_id])
seccion_aduanera = relationship('SeccionAduanera', foreign_keys="[seccion_aduanera_id]")
def __init__(self, kwargs):
self.__dict__.update(kwargs)
def __repr__(self):
return '<Blog %r>' % self.name
class SeccionAduanera(Base):
__tablename__ = 'seccion_aduanera'
__table_args__ = {'schema': 'comext'}
__sequencename__ = __tablename__ + '_id_seq'
id = Column(
Integer,
db.Sequence(__sequencename__),
primary_key=True,
server_default=text("nextval('\""+__sequencename__+"\"'::regclass)")
)
aduana = Column(String(2), nullable=False)
seccion = Column(String(1), nullable=False)
denominacion = Column(String(250), nullable=False)
RE: Sqlalchemy foreign key problem - Ecniv - May-01-2019
Quote:sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 'clave_operacion_pedimento.clave_fecha_operacion_id' could not find table 'clave_fecha_operacion' with which to generate a foreign key to target column 'id'
It cannot find a table clave_fecha_operacion
See if the table exists or has a mistake in the name.
RE: Sqlalchemy foreign key problem - praveen - Feb-07-2020
i am also facing same problem any help
|