Python - sqlalchemy. exe . programmingerror: (psycopg2.error



我是Sqlalchemy的新手。我有两个对象User和Product。我想在它们之间建立关系。

from sqlalchemy import Column, String, Boolean, create_engine, ForeignKey, PrimaryKeyConstraint
from sqlalchemy.orm import relationship
class User():
__tablename__ = 'user'
username= Column(String, primary_key = True)
random_string = Column(String)
class Product():
__tablename__ = 'product'
username= Column(String, ForeignKey('user.username'))
productname = Column(String)
status = Column(Boolean)
usr = relationship("User", back_populates="product")
Base.metadata.create_all(engine)

但是我得到了错误sqlalchemy.exc.ProgrammingError: (psycopg2.errors.InvalidForeignKey) there is no unique constraint matching given keys for referenced table "user".如果我解除关系,它会起作用,但这不是我的目的。我如何修复它?我想问为什么我们要用关系?

没有连接userproduct的列,因此sqlalchemy无法解决这一关系。relationship是一个帮助您提供/接收给定类型的对象而不仅仅是键值的帮助器。

您仍然需要有连接表的实际列,例如Product上的user_idUser上的product_id,以便relationship能够发现UserProduct是如何连接的。

由于username列连接到agent表而不是user表,因此SQLAlchemy无法使用该列链接两个表。或者添加一个单独的user_username(或者更好的是,使用一个实际的自动递增的idprimary_key=True集合,这样你就可以为每个用户和产品获得唯一的id)字段与一个链接到用户表的ForeignKey,或者将当前的ForeignKey更改为链接到user而不是agent

相关内容

  • 没有找到相关文章

最新更新