Sono nuovo in sqlalchemy. Ho seguito il tutorial per creare l'Automap di un db esistente con rapporto da un DB MySQLÈ possibile dichiarare una relazione dopo che la classe è stata creata da automap in SqlAlchemy
from sqlalchemy import create_engine, MetaData, Column, Table, ForeignKey
from sqlalchemy.ext.automap import automap_base, generate_relationship
from sqlalchemy.orm import relationship, backref
from config import constr, mytables
def _gen_relationship(base, direction, return_fn,
attrname, local_cls, refferred_cls, **kw):
return generate_relationship(base, direction, return_fn, attrname, local_cls, refferred_cls, **kw)
engine = create_engine(constr)
metadata = MetaData()
metadata.reflect(engine, only=mytables)
Base = automap_base(metadata=metadata)
Base.prepare(engine, reflect=True, generate_relationship=_gen_relationship)
Tableclass1 = Base.classes.table1
Tableclass2 = Base.classes.table2
Table2.ID
mappe ad una delle colonne table1
s'. Ma quando stavo cercando di utilizzare query e join table1
e table2
, riporta un errore che dice "Impossibile trovare relazioni con le chiavi esterne". Dal momento che conosco la relazione di queste 2 tabelle, c'è modo per me di dichiarare questa relazione dopo che l'istanza della classe è stata creata? O c'è modo di dire esplicitamente questa relazione nella funzione di ricerca? Grazie!