Il semble que ce que vous décrivez soit une fonctionnalité en soi. sqlacodegen
ne générera pas toujours des modèles de classe.
Il sera uniquement des classes de modèle de formulaire pour les tables qui ont une clé primaire et ne sont pas des tables d'association, comme vous pouvez le voir dans le source code:
# Only form model classes for tables that have a primary key and are not association tables
if noclasses or not table.primary_key or table.name in association_tables:
model = self.table_model(table)
else:
model = self.class_model(table, links[table.name], self.inflect_engine, not nojoined)
classes[model.name] = model
En outre, dans le documentation il est indiqué que
une table est considérée comme une table d'association si elle satisfait à toutes les conditions suivantes:
- a exactement deux clés étrangères
- toutes ses colonnes sont impliquées dans lesdites contraintes
Bien, vous pouvez essayer un hack rapide et sale. Localiser les lignes dans le code source (quelque chose comme /.../lib/python2.7/site-packages/sqlacodegen/codegen.py
) et de commenter les trois premières lignes de code (et fixer indentation):
# Only form model classes for tables that have a primary key and are not association tables
# if noclasses or not table.primary_key or table.name in association_tables:
# model = self.table_model(table)
# else:
model = self.class_model(table, links[table.name], self.inflect_engine, not nojoined)
classes[model.name] = model
J'ai essayé pour une table spécifique qui a été généré en tant que modèle de table. Il est passé de
t_Admin_op = Table(
'Admin_op', metadata,
Column('id_admin', Integer, nullable=False),
Column('id_op', Integer, nullable=False)
)
à
class AdminOp(Base):
__tablename__ = 'Admin_op'
id_admin = Column(Integer, nullable=False)
id_op = Column(Integer, nullable=False)
Vous pouvez également ouvrir une question à ce sujet comme une demande de fonctionnalité, dans le official tracker. Juste au cas où, si vous voulez l'opposé (seulement les modèles de table), vous pouvez le faire avec le drapeau --noclasses
.