Hi, I'm trying to use automap a schema, and let it generate all classes and relationships between my tables. It seems to work well for all relationships except for one-to-one. I know to set a one-to-one relationship, you must apply the uselist=True keyword in relationship(). What's the best way to do that when I'm letting automap generate them? Without having to manually do it myself by removing the automap generated ones, and setting them explicitly. Here is what I'm trying so far, but it's not working.
onetoones = ['file'] def _gen_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw): if local_cls.__table__.name in onetoones: kw['uselist'] = False # make use of the built-in function to actually return the result. return generate_relationship(base, direction, return_fn, attrname, local_cls, referred_cls, **kw) def camelizeClassName(base, tablename, table): return str(tablename[0].upper() + re.sub(r'_([a-z])', lambda m: m.group(1).upper(), tablename[1:])) _pluralizer = inflect.engine() def pluralize_collection(base, local_cls, referred_cls, constraint): referred_name = referred_cls.__name__ uncamelized = re.sub(r'[A-Z]', lambda m: "_%s" % m.group(0).lower(), referred_name)[1:] pluralized = _pluralizer.plural(uncamelized) return pluralized # Grabs engine db = DatabaseConnection() engine = db.engine # Selects schema and automaps it. metadata = MetaData(schema='mangadapdb') Base = automap_base(bind=engine, metadata=metadata) # Pre-define Dap class. Necessary so automap knows to join this table to a declarative base class from another schema class Dap(Base): __tablename__ = 'dap' cube_pk = Column(Integer, ForeignKey(datadb.Cube.pk)) cube = relationship(datadb.Cube, backref='dap', uselist=False) # Prepare the base Base.prepare(engine, reflect=True, classname_for_table=camelizeClassName, name_for_collection_relationship=pluralize_collection, generate_relationship=_gen_relationship) # Explicitly declare classes for cl in Base.classes.keys(): exec('{0} = Base.classes.{0}'.format(cl)) -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.