I am trying to define a dataclass for my model in the same class of the model, where i have defined the table.
this is my model class,
from dataclasses import dataclass, field
from sqlalchemy import Column, Integer, String
from Database.db_setup import Base
@dataclass
class Director(Base):
__tablename__ = 'directors'
id: int = field(init=False, default=None)
name: str
id = Column(Integer, primary_key=True, nullable=False)
name = Column(String, nullable=False, unique=True)
this is my gateway class where i am trying to use it
from src.Database.db_setup import Session
from src.Database.directors.director_model import Director
from sqlalchemy.exc import IntegrityError
def add_director(director_data: Director):
session = Session()
new_director = Director(name=director_data.name)
try:
session.add(new_director)
session.commit()
print(f"Added Director '{director_data.name}' successfully.")
except IntegrityError:
print(f"Error adding director: Director with name {director_data.name} already exists.")
session.rollback()
except Exception as e:
print(f"Error adding director: {e}")
session.rollback()
finally:
session.close()
tempdirector = Director("Jerry")
add_director(tempdirector)
Traceback (most recent call last):
File “/home/student-4318/src/Database/directors/gateway.py”, line 23, in
temdirector = Director(“Jerry”)
TypeError: init() takes 1 positional argument but 2 were given
I am getting this error message , how can i ignore the id as an positional argument because it gets generated by itself.