0

I have the following Python code where I'm using the SQLAlchemy library. In the code, I added a record to the 'attendance' table where the foreign key doesn't reference any valid record in the 'employee' table, yet no error is thrown when I execute it. Can someone explain why this is happening?

from datetime import datetime, time
from sqlalchemy import Column, ForeignKey, create_engine, DateTime, Integer, String, Time
from sqlalchemy.orm import declarative_base, sessionmaker

Base = declarative_base()

class Employee(Base):

    __tablename__ = 'employee'

    id_employee = Column(Integer, primary_key=True)
    first_name = Column(String)
    last_name_1 = Column(String)
    last_name_2 = Column(String)

    def __init__(self, id_employee, first_name, last_name_1, last_name_2):

        self.id_employee = id_employee
        self.first_name = first_name
        self.last_name_1 = last_name_1
        self.last_name_2 = last_name_2

    def __repr__(self):

        return f'Employee({self.id_employee}, {self.first_name}, {self.last_name_1}, {self.last_name_2})'
    
class Attendance(Base):

    __tablename__ = 'attendance'

    date = Column(DateTime, primary_key=True)
    id_employee = Column(Integer, ForeignKey('employee.id_employee'), primary_key=True)
    start_time = Column(Time)
    end_time = Column(Time)

    def __init__(self, date, id_employee, start_time, end_time):

        self.date = date
        self.id_employee = id_employee
        self.start_time = start_time
        self.end_time = end_time

    def __repr__(self):

        return f'Attendance({self.date}, {self.id_employee}, {self.start_time}, {self.end_time})'
    
engine = create_engine('sqlite:///database.db', echo=True)
Base.metadata.create_all(bind=engine)

Session = sessionmaker(bind=engine)
session = Session()

emp_1 = Employee(1, 'WALTER', 'WHITE', 'WHITE')
session.add(emp_1)

att_1 = Attendance(datetime(2023, 4, 22), 10, time(10, 0), time(18, 0))
session.add(att_1)

session.commit()
session.close()

The only thing I expect is to not be able to add records when the foreign key is not a valid employee_id.

RiXaTorAgu
  • 11
  • 2

0 Answers0