Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python turbogears/sqlalchemy中独一无二的django风格_Python_Django_Sqlalchemy_Turbogears - Fatal编程技术网

Python turbogears/sqlalchemy中独一无二的django风格

Python turbogears/sqlalchemy中独一无二的django风格,python,django,sqlalchemy,turbogears,Python,Django,Sqlalchemy,Turbogears,这个问题基本上分为两个部分。 1.我有一种情况,我要求事物在一起是唯一的,即db中的元素需要在一起是唯一的 假设我们有一个模型(粗略的伪代码) 现在我需要thing1_id和thing2_id一起是唯一的,即thing1_id和thing2_id的集合需要一起是唯一的。来自django world,我知道您可以一起在unique_的django模型中进行元声明。但涡轮齿轮如何做到这一点呢 另外,我如何在遗留系统上实际应用唯一的_ 对于问题的第一部分,如果我正确理解了您的问题,我相信您所说的是定义

这个问题基本上分为两个部分。 1.我有一种情况,我要求事物在一起是唯一的,即db中的元素需要在一起是唯一的

假设我们有一个模型(粗略的伪代码)

现在我需要thing1_id和thing2_id一起是唯一的,即thing1_id和thing2_id的集合需要一起是唯一的。来自django world,我知道您可以一起在unique_的django模型中进行元声明。但涡轮齿轮如何做到这一点呢

  • 另外,我如何在遗留系统上实际应用唯一的_
  • 对于问题的第一部分,如果我正确理解了您的问题,我相信您所说的是定义复合主键的必要性。如下列文件所述:

    可以为多列分配primary_key=True标志,该标志表示多列主键,称为复合主键

    在SQLAlchemy中使用声明性ORM方式在类上定义这样的关系应该非常简单:

    class ShoppingList(Base):
        thing1_id = Column(Integer, primary_key=True)
        thing2_id = Column(Integer, primary_key=True)
    
    Class ShoppingList( object ):
        thing1_id = Column(Integer)
        thing2_id = Column(Integer)
    
        __table_args__ = (
            UniqueConstraint('thing1_id', 'thing2_id'),
        )
    
  • 至于问题的第二部分,我相信您的意思是如何为现有的遗留数据库定义相同的SQLAlchemy映射。如果是这样,您应该能够使用上述方法,只是不要从ORM定义创建数据库。您也可以使用经典映射方式,如中所述:


  • 您只需要向表定义中添加一个
    UniqueConstraint
    (使用主键将获得类似的效果,但语义不同)

    这很简单:

    class ShoppingList(Base):
        thing1_id = Column(Integer, primary_key=True)
        thing2_id = Column(Integer, primary_key=True)
    
    Class ShoppingList( object ):
        thing1_id = Column(Integer)
        thing2_id = Column(Integer)
    
        __table_args__ = (
            UniqueConstraint('thing1_id', 'thing2_id'),
        )
    
    另见