On Jul 9, 2012, at 6:08 PM, Jules Stevenson wrote: > Hi All, > > I'm trying to put together an Association Object mapping within a pylons app, > but am getting the following error: > > OperationalError: (OperationalError) (1364, "Field 'user_id' doesn't have a > default value") 'INSERT INTO contact_duedate_user_association (contact_id, > modded) VALUES (%s, %s)' (209L, datetime.date(2012, 7, 18)) > > As far as I can tell I've followed the recomendations in the association > object help and am somehwta stumped as to what is causing the error. The > classes are non-declarative, and are as follows (and if the formatting holds > up the relevant bits should be in bold). Any help enormously appreciated.
mapping looks fine, you'd need to ensure every ArkContactDueDate you add to the Session is associated with a User also in that session. single_parent=True should not be needed here. > > contacts_table = sa.Table('contacts', meta.metadata, > sa.Column('id', sa.types.Integer, primary_key=True), > sa.Column('project_id', sa.types.Integer, sa.ForeignKey('projects.id')), > sa.Column('client_id', sa.types.Integer, sa.ForeignKey('clients.id')), > sa.Column('firstname',sa.types.String(length=255)), > sa.Column('lastname', sa.types.String(length=255)), > sa.Column('email1', sa.types.String(length=255)), > sa.Column('email2', sa.types.String(length=255)), > sa.Column('workphone', sa.types.String(length=255)), > sa.Column('mobile', sa.types.String(length=255)), > sa.Column('company', sa.types.String(length=255)), > sa.Column('category', sa.types.String(length=255)), > sa.Column('job_role', sa.types.String(length=255)), > sa.Column('mailer', sa.types.Boolean), > sa.Column('type', sa.types.Integer), # 0: contact, 1: press > sa.Column('modified', sa.types.DateTime), > ) > > class ArkContact(object): > def __init__(self): > self.category = 0 > self.type = 0 > self.modified = datetime.datetime.now() > > #due_contact_association > contact_due_contact = sa.Table('contact_duedate_user_association', > meta.metadata, > sa.Column('contact_id', sa.types.Integer, sa.ForeignKey('contacts.id'), > primary_key = True), > sa.Column('user_id', sa.types.Integer, sa.ForeignKey('users.id'), > primary_key = True), > sa.Column('modded', sa.types.Date) > ) > > class ArkContactDueDate(object): > def __init__(self): > pass > > > # ArkContactDueDate > orm.mapper(ArkContactDueDate, contact_due_contact, properties={ > 'contact': orm.relation(ArkContact, backref = 'due_dates') > }) > > # ArkUser - users module > orm.mapper(ArkUser, users_table, properties={ > 'notes': orm.relation(ArkNote, > secondary=user_notes_table, > single_parent=True, > backref='user', > order_by=notes_table.c.date, > cascade="all, delete, delete-orphan"), > 'software': orm.relation(ArkSoftware, > secondary=user_software_table, > backref='users'), > 'ratings': orm.relation(ArkUserSoftwareRating, > cascade="all, delete", > backref='user'), > 'job': orm.relation(ArkJob, > backref='user'), > 'due_contacts': orm.relation(ArkContactDueDate, > backref = 'due_user', > single_parent=True) > }) > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To post to this group, send email to sqlalchemy@googlegroups.com. > To unsubscribe from this group, send email to > sqlalchemy+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/sqlalchemy?hl=en. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.