如果不是null SQLAlchemy和Django,则为唯一

MCH*_*MCH 10 sql django null sqlalchemy unique

鉴于这个用SQLAlchemy和Django models.py编写的简单表,如果不为null,我如何设置UPC是唯一的.UPC不适用于所有项目,但是它应该是唯一的.

class Products(base):  
    __tablename__ = u'products'  
    id = Column(Integer(), primary_key=True, autoincrement = True)  
    product_name = Column(String(), unique=True, nullable=False)  
    upc = Column(String(), nullable = True)  
Run Code Online (Sandbox Code Playgroud)

class Products(models.Model):
    id = models.AutoField(primary_key=True)
    product_name = models.TextField()
    upc = models.TextField(null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

Flo*_*ian 12

具有NULL值的多行不应该是唯一约束的问题.只有"值"必须是唯一的,NULL不是值.

你有没有尝试过?:

upc = Column(String(), unique=True, nullable=True) 
Run Code Online (Sandbox Code Playgroud)

  • 好的,这是有道理的.我意识到我可能在应用程序的某个地方犯了一个错误,我想要null,但实际上我可能会放一个空字符串,这会导致唯一性问题. (3认同)