sqlalchemy.exc.ArgumentError: Mapper mapped class PartCar->partcar could not assemble any primary key columns for mapped table 'partcar'
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
你PartCar表,没有一个主键,为此,SQLAlchemy的是引发错误。
Flask-SQLAlchemy 需要一个主键,因为SQLAlchemy ORM 需要一个主键:
SQLAlchemy ORM,为了映射到特定的表,需要至少有一个列表示为主键列。
大多数 ORM 要求对象定义某种主键,因为内存中的对象必须对应于数据库表中唯一可识别的行。
| 归档时间: |
|
| 查看次数: |
4402 次 |
| 最近记录: |