ash*_*him 4 postgresql sqlalchemy
我是 sqlalchemy 的新手。我想创建一个类,该类对于不同的表有两个外键。为什么我会收到下一个错误?
sqlalchemy.exc.IntegrityError: (IntegrityError) insert or update on table "event" violates foreign key constraint "event_user_fkey"
DETAIL: Key (user)=(U) is not present in table "user".
'INSERT INTO event (id, "user", item) VALUES (%(id)s, %(user)s, %(item)s)' {'item': 'I', 'user': 'U', 'id': 'E'}
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
class User(Base):
__tablename__ = 'user'
id = Column(String, primary_key=True)
def __init__(self, id):
self.id = id
class Item(Base):
__tablename__ = 'item'
id = Column(String, primary_key=True)
def __init__(self, id):
self.id = id
class Event(Base):
__tablename__ = 'event'
id = Column(String, primary_key=True)
user = Column(String, ForeignKey('user.id'))
item = Column(String, ForeignKey('item.id'))
def __init__(self, id, user_id, item_id):
self.id = id
self.user = user_id
self.item = item_id
Run Code Online (Sandbox Code Playgroud)
我使用 postgresql 作为后端。
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
usr = User('U')
it = Item('I')
event = Event('E', usr.id, it.id)
session.add(usr)
session.add(it)
session.add(event)
Run Code Online (Sandbox Code Playgroud)
该错误似乎很清楚:
Key (user)=(U) is not present in table "user".
因此,它尝试在用户提交到数据库之前插入事件行,这会破坏外键约束,从而导致此错误。尝试在提交事件之前将用户和项目提交到数据库,这取决于它们,问题应该消失。
| 归档时间: |
|
| 查看次数: |
6523 次 |
| 最近记录: |