Eine Top-Klasse namens mit Parametric
verwendet wird, um Objekte zu schaffen, die mit ihnen verbundenen Parameter haben:Einzigartige Beschränkungsdaten in mehreren Tabellen (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)
ich SQLAlchemy für meinen ORM-Engine verwenden.
Ich möchte ein UNIQUE
Zwang aufzuerlegen, die sicherstellt, dass die Kombination (name
, prop
) sind einzigartig für eine bestimmte Klasse (zB nur eine Instanz von Foo
"my_foo"
aufgerufen werden kann und haben einen prop
Wert von "my_prop"
sagen), aber Ich sehe nicht, wie man die name
Spalte von Parametric
in der Foo
Tabelle UNIQUECONSTRAINT
Abschnitt referenziert.
Ist diese Einzigartigkeit etwas, das über FOREIGN KEY
Richtlinien auferlegt werden kann?
Zur gleichen Zeit haben Sie eine Instanz von Foo namens my_foo mit einem Prop-Wert von my_prop, können Sie auch eine Instanz von Bar namens my_foo (kein Tippfehler) mit einer Prop namens my_prop? –
Dies ist kein SQL-Code. Es gibt viele verschiedene Ansätze für die Vererbung in sqlalchemy, aber ich kann Ihnen sofort sagen, dass Sie nur In-Base-Constraints einrichten können (ohne zusätzliche Tabellen zu erstellen), wenn Sie Shared Table-Vererbung verwenden - Ihre 'prop'- und' name'-Spalten sollten sein in der gleichen Tabelle, um das zu tun. – letitbee
Versuchen Sie vielleicht zu tun, was Mixins machen? http://www.sqlalchemy.org/docs/orm/extensions/declarative.html#mixin-classes –