Une première classe appelée Parametric
est utilisé pour créer des objets qui peuvent avoir des paramètres qui leur sont associés:contrainte unique à l'aide des données dans plusieurs tables (SQL/sqlalchemy)
class Parametric(object):
def __init__(self, name):
self.name = name
self.pars = []
class Foo(Parametric):
def __init__(self, name, prop):
self.prop = prop
Parametric.__init__(self, name)
class Bar(Parametric):
def __init__(self, name, prop):
self.prop = prop
Parametric.__init__(self, name)
J'utilise SQLAlchemy pour mon moteur ORM.
Je veux imposer une contrainte UNIQUE
qui assure que la combinaison (name
, prop
) sont uniques pour une classe donnée (par exemple, une seule instance de Foo
peut être appelé "my_foo"
et ont une valeur prop
, disons "my_prop"
), mais Je ne vois pas comment référencer la colonne name
de Parametric
dans la section Foo
table UNIQUECONSTRAINT
.
Est-ce que cette unicité peut être imposée via les directives FOREIGN KEY
?
Dans le même temps vous avez une instance de Foo appelée my_foo avec une valeur de prop de my_prop, pouvez-vous également avoir une instance de Bar appelée my_foo (pas une faute de frappe) avec un prop appelé my_prop? –
Ce n'est pas un code sqlalchemy. Il existe de nombreuses approches différentes de l'héritage dans sqlalchemy, mais je peux vous dire tout de suite que vous ne pouvez configurer que des contraintes internes (sans créer de tables supplémentaires) si vous utilisez l'héritage de tables partagées - vos colonnes 'prop' et' name' dans la même table pour le faire. – letitbee
Etes-vous peut-être en train de faire ce que font les mixins? http://www.sqlalchemy.org/docs/orm/extensions/declarative.html#mixin-classes –