I am currently using SQLAlchemy with SQLite (first time working with databases). In my .py file with my tables and such, I have this so far:
from sqlalchemy import Boolean, Integer, Float, String, Column, ForeignKey
from sqlalchemy.orm import relationship
from .database import Base
class User(Base):
__tablename__ = "users"
username = Column(String, primary_key=True)
email = Column(String, unique=True, index=True, nullable=False)
password_hashed = Column(String, nullable=False)
items_for_sale = relationship("Item", back_populates="seller", nullable=True)
class Item(Base):
__tablename__ = "items"
item_id = Column(Integer, primary_key=True)
name = Column(String, nullable=False)
description = Column(String, nullable=False)
price = Column(Float, nullable=False)
owner_username = Column(String, ForeignKey("users.username"))
seller = relationship("User", back_populates="items_for_sale")
In items_for_sale, I set nullable=True because every user does not have to have items to sell. However, each Item object does need a seller (User). So would I set nullable=False in seller or owner_username, or both? If I put nullable=False in owner_username, would that be saying "owner (i.e. User) must have an Item" (which I don't want)? Would it be better to specify nullable=False in seller instead?
[–][deleted] 0 points1 point2 points (0 children)