5656 get_common_fk_constraints ,
5757 get_compiled_expression ,
5858 get_constraint_sort_key ,
59+ qualified_table_name ,
5960 render_callable ,
6061 uses_default_name ,
6162)
@@ -692,6 +693,8 @@ def generate_models(self) -> list[Model]:
692693 # Pick association tables from the metadata into their own set, don't process them normally
693694 links : defaultdict [str , list [Model ]] = defaultdict (lambda : [])
694695 for table in self .metadata .sorted_tables :
696+ qualified_name = qualified_table_name (table )
697+
695698 # Link tables have exactly two foreign key constraints and all columns are involved in
696699 # them
697700 fk_constraints = sorted (
@@ -700,18 +703,18 @@ def generate_models(self) -> list[Model]:
700703 if len (fk_constraints ) == 2 and all (
701704 col .foreign_keys for col in table .columns
702705 ):
703- model = models_by_table_name [table . name ] = Model (table )
706+ model = models_by_table_name [qualified_name ] = Model (table )
704707 tablename = fk_constraints [0 ].elements [0 ].column .table .name
705708 links [tablename ].append (model )
706709 continue
707710
708711 # Only form model classes for tables that have a primary key and are not association
709712 # tables
710713 if not table .primary_key :
711- models_by_table_name [table . name ] = Model (table )
714+ models_by_table_name [qualified_name ] = Model (table )
712715 else :
713716 model = ModelClass (table )
714- models_by_table_name [table . name ] = model
717+ models_by_table_name [qualified_name ] = model
715718
716719 # Fill in the columns
717720 for column in table .c :
@@ -735,7 +738,7 @@ def generate_models(self) -> list[Model]:
735738 for constraint in model .table .foreign_key_constraints :
736739 if set (get_column_names (constraint )) == pk_column_names :
737740 target = models_by_table_name [
738- constraint .elements [0 ].column .table . name
741+ qualified_table_name ( constraint .elements [0 ].column .table )
739742 ]
740743 if isinstance (target , ModelClass ):
741744 model .parent_class = target
@@ -750,6 +753,7 @@ def generate_models(self) -> list[Model]:
750753 }
751754 for model in models_by_table_name .values ():
752755 self .generate_model_name (model , global_names )
756+ global_names .add (model .name )
753757
754758 return list (models_by_table_name .values ())
755759
@@ -767,12 +771,14 @@ def generate_relationships(
767771 for constraint in sorted (
768772 source .table .foreign_key_constraints , key = get_constraint_sort_key
769773 ):
770- target = models_by_table_name [constraint .elements [0 ].column .table .name ]
774+ target = models_by_table_name [
775+ qualified_table_name (constraint .elements [0 ].column .table )
776+ ]
771777 if isinstance (target , ModelClass ):
772778 if "nojoined" not in self .options :
773779 if set (get_column_names (constraint )) == pk_column_names :
774780 parent = models_by_table_name [
775- constraint .elements [0 ].column .table . name
781+ qualified_table_name ( constraint .elements [0 ].column .table )
776782 ]
777783 if isinstance (parent , ModelClass ):
778784 source .parent_class = parent
@@ -841,7 +847,7 @@ def generate_relationships(
841847 key = get_constraint_sort_key ,
842848 )
843849 target = models_by_table_name [
844- fk_constraints [1 ].elements [0 ].column .table . name
850+ qualified_table_name ( fk_constraints [1 ].elements [0 ].column .table )
845851 ]
846852 if isinstance (target , ModelClass ):
847853 relationship = RelationshipAttribute (
0 commit comments