使用python语言sqlalchemy orm实现交叉连接时出现完整性错误

使用python语言sqlalchemy orm实现交叉连接时出现完整性错误,python,sqlite,flask,flask-sqlalchemy,database-schema,Python,Sqlite,Flask,Flask Sqlalchemy,Database Schema,表1-1-1示功图 数据库模型 class A(db.Model): __tablename__ = 'A' id = db.Column(db.Integer, primary_key=True, index=True, autoincrement=True) name = db.Column(db.String(100), nullable=False) def __repr__(self): return '<A {}>'.

表1-1-1示功图

数据库模型

class A(db.Model):
    __tablename__ = 'A'

    id = db.Column(db.Integer, primary_key=True, index=True, autoincrement=True)
    name = db.Column(db.String(100), nullable=False)

    def __repr__(self):
        return '<A {}>'.format(self.name)

class B(db.Model):
    __tablename__ = 'B'

    id = db.Column(db.Integer, primary_key=True, index=True, autoincrement=True)
    name = db.Column(db.String(100), nullable=False)

    def __repr__(self):
        return '<B {}>'.format(self.name)


class AB(db.Model):
    __tablename__ = 'a'

    id = db.Column(db.INTEGER, index=True, autoincrement=True, primary_key=True)
    a_id = db.Column(db.Integer, db.ForeignKey('roles.id'), nullable=False, )
    b_id = db.Column(db.Integer, db.ForeignKey('domain.id'), nullable=False, unique=False)

    a = db.relationship('A', backref=db.backref('A', lazy=True))
    b = db.relationship('B', backref=db.backref('B', lazy=True))

    def __repr__(self):
        return "<AB, A{}  B{}>".format(self.a, self.b)
我想要的是在AB中创建AXB,即(1,1,1)、(1,1,2)、(1,1,3)、(1,1,4)…(1,2,1)、(1,2,2)

但我犯了一个错误

错误:sqlalchemy.exc.IntegrityError:(sqlite3.IntegrityError)唯一约束失败:a.name

这只是表a和表B的交叉连接,但是当我试图通过python进行连接时,我得到了intgerity错误

我想让表A和表B中的名字也独一无二,这是一个好方法还是不告诉我,我应该如何解决这个问题


谢谢

这个
x1=A(name=i)
应该在
j
循环之外吗?不可能,但它不会影响AB过程,创建时有点问题,因为我可以手动编辑表,但通过sqlalechemy orm我得到了错误,我也尝试了这种方法
  l1 = [1,2,3,4,5]
l2 = [1,2,3,4,5]

import db
for i in l1:
    for j in l2:
        x1 = A(name=i)
        x2= B(name=j)

        x3 = AB(a=x1, b=x2)
        db.session.add(x3)
        db.session.commit()
db.session.close()

# HERE db is flask_sqlalchemy object