Dites que j'ai deux tables, foo et bar. Les deux ont des clés primaires. Je veux le configurer dans SQLAlchemy afin que l'ensemble combiné de foo.id et bar.id soit unique. Comment ferais-je cela?SQLAlchemy schéma qui permet à deux tables de partager une colonne de clé primaire
J'ai essayé d'ajouter une autre table ne contenant que les clés primaires et ayant des clés étrangères dans foo et bar, comme ceci:
class foo(Base):
__tablename__ = 'foo'
id = Column(Integer, ForeignKey('primary_keys.id'), primary_key=True)
class bar(Base):
__tablename__ = 'bar'
id = Column(Integer, ForeignKey('primary_keys.id'), primary_key=True)
class primary_keys(Base):
__tablename__ = 'primary_keys'
id= Column(Integer, primary_key=True)
Mais il m'a donné cette erreur:
FlushError: Instance has a NULL identity key. If this is an auto-generated value, check that the database table allows generation of new primary key values, and that the mapped Column object is configured to expect these generated values. Ensure also that this flush() is not occurring at an inappropriate time, such aswithin a load() event.
est-il peut-être une meilleure solution pour ce que j'essaie de faire?
EDIT: J'utilise un sqlite db.
Quelle base de données est-ce sur? Je crois que cela devrait fonctionner comme écrit avec MS-SQL. En outre, je suppose que vous utilisez la fonction ['create_all'] (http://docs.sqlalchemy.org/en/rel_1_0/core/metadata.html#sqlalchemy.schema.MetaData.create_all)? – user25064
Désolé, j'utilise sqlite. Et oui je suis. – Niel
Je crois que cela devrait fonctionner comme codé, peut-être que vous pouvez fournir un exemple entièrement exécutable qui provoque l'erreur. – user25064