Python 映射器映射的类无法为映射的表组装任何主键列

Python 映射器映射的类无法为映射的表组装任何主键列,python,sqlalchemy,Python,Sqlalchemy,您的零件车表,没有主键,sqlalchemy正在为其引发错误 炼金术需要主键,因为: 为了映射到特定的表,SQLAlchemy ORM需要在那里 至少有一列表示为主键列 大多数ORM要求对象定义某种主键 因为内存中的对象必须与唯一的 数据库表中的可识别行 您的零件车表,没有主键,sqlalchemy正在为其引发错误 炼金术需要主键,因为: 为了映射到特定的表,SQLAlchemy ORM需要在那里 至少有一列表示为主键列 大多数ORM要求对象定义某种主键 因为内存中的对象必须与唯一的 数据库表中

您的零件车表没有主键,sqlalchemy正在为其引发错误

炼金术需要主键,因为:

为了映射到特定的表,SQLAlchemy ORM需要在那里 至少有一列表示为主键列

大多数ORM要求对象定义某种主键 因为内存中的对象必须与唯一的 数据库表中的可识别行


您的零件车表没有主键,sqlalchemy正在为其引发错误

炼金术需要主键,因为:

为了映射到特定的表,SQLAlchemy ORM需要在那里 至少有一列表示为主键列

大多数ORM要求对象定义某种主键 因为内存中的对象必须与唯一的 数据库表中的可识别行

sqlalchemy.exc.ArgumentError: Mapper mapped class PartCar->partcar could not assemble any primary key columns for mapped table 'partcar'
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship

Base = declarative_base()


class User(Base):
    __tablename__ = 'USER'

    user_id = Column(Integer)
    passport_number = Column(String(8), primary_key=True, nullable=False)
    user_email = Column(String(20), nullable=False)
    user_name = Column(String(20), nullable=False)

    carHave = relationship('Car', secondary='caruser')


class Car(Base):
    __tablename__ = 'car'

    car_number = Column(Integer, primary_key=True, nullable=False)

    userHave = relationship('User', secondary='caruser')
    partHave = relationship('Part', secondary='partcar')


class Part(Base):
    __tablename__ = 'part'

    part_name = Column(String(20), primary_key=True, nullable=False)

    carHave = relationship('Car', secondary='partcar')


class CarUser(Base):
    __tablename__ = 'caruser'

    user_passport_number = Column(String(8), ForeignKey('USER.passport_number'))
    car_number = Column(Integer, ForeignKey('car.car_number'))
    car_model = Column(String(20), nullable=False)


class PartCar(Base):
    __tablename__ = 'partcar'

    part_car_number = Column(Integer, ForeignKey('car.car_number'))
    part_name = Column(String(20), ForeignKey('part.part_name'))
    part_price = Column(Integer, nullable=False)