2017-10-17 35 views
-1
class KtOwnerAddressMaster(db.Model): 

    __tablename__ = 'kt_owner_address_master' 
    ADDRESS_ID = db.Column(Integer, primary_key=True) 
    STREET1 = db.Column(String(1024), nullable=False) 
    STREET2 = db.Column(String(1024)) 
    ZIP = db.Column(String(15)) 
    CITY_NAME = db.Column(String(200)) 
    STATE = db.Column(String(200)) 
    COUNTRY = db.Column(String(200)) 
    ADDR_EXT_ID = db.Column(String(50), nullable=False, unique=True) 
    CREATED_ON = db.Column(DateTime, nullable=False) 
    UPDATED_ON = db.Column(DateTime) 
    def __init__(self, **kwargs): 
    super(KtOwnerAddressMaster, self).__init__(**kwargs) 
    return 
class KtOwnerAddressMap(KtOwnerAddressMaster): 
    __tablename__ = 'kt_owner_address_map' 
    ADDRESS_ID =db.Column(ForeignKey(u'kt_owner_address_master.ADDRESS_ID'), primary_key=True) 
    CURRENT_ADDR = db.Column(SmallInteger, nullable=False, server_default=text("'0'")) 
    FRIENDLY_NAME = db.Column(String(100)) 
    OWNER_ID = db.Column(ForeignKey(u'kt_owner_master.OWNER_ID'), nullable=False, index=True) 

    kt_owner_master = relationship(u'KtOwnerMaster') 
    def __init__(self, **kwargs): 
    super(KtOwnerAddressMap, self).__init__(**kwargs) 
    return 

Et dans mon point de vue que je fais ce qui suit:session sqlalchemy appelant une autre table

ad_object=KtOwnerAddressMaster(STREET1=street1, 
            STREET2=street2, 
            ZIP=zipcode, 
            ADDR_EXT_ID=addr_ext_id,       
      CREATED_ON=datetime.now().strftime("%Y:%m:%d %H:%M:%S"),        
      UPDATED_ON=datetime.now().strftime("%Y:%m:%d %H:%M:%S"), 
            CITY_NAME =city_name, 
            STATE=state, 
            COUNTRY=country) 

     db.session.add(ad_object) 
     db.session.commit() 

    addr_obj=db.session.query(KtOwnerAddressMaster).filter_by(ADDR_EXT_ID=addr_ext_id).with_entities(KtOwnerAddressMaster.ADDRESS_ID).first() 
    address_id=int(addr_obj[0]) 

Maintenant, je suis en train d'ajouter une carte d'adresse à la table de carte d'adresse du propriétaire.

add_object=KtOwnerAddressMap(ADDRESS_ID=address_id, 
         CURRENT_ADDR="current_addr", 
         FRIENDLY_NAME="friendly_name", 
         OWNER_ID=owner_id) 

    db.session.add(add_object) 
    #The error appears on the below commit 
    db.session.commit() 

Je peux voir l'adresse étant peuplée dans la base de données. Mais je ne suis pas capable d'insérer le propriétaire pour adresser le mappage dans la table. Il me donne l'erreur suivante: (_mysql_exceptions.OperationalError) (1048, "La colonne 'STREET1' ne peut pas être nulle") [SQL: u'INSERT EN kt_owner_address_master (ADDRESS_ID, STREET1, STREET2, ZIP, CITY_NAME, STATE, COUNTRY, ADDR_EXT_ID, CREATED_ON, UPDATED_ON) VALEURS (% s,% s,% s,% s,% s,% s,% s,% s,% s,% s) '] [paramètres: (51, Aucun, Aucun, Aucun, aucun, aucun, aucun, aucun, aucun, aucun)]

Votre aide sera grandement appréciée.

Répondre

0

J'ai découvert le défaut. Il y avait une faute de frappe dans mon code.

class KtOwnerAddressMap(KtOwnerAddressMaster): 

Cela aurait dû l'être.

class KtOwnerAddressMap(db.Model): 

Ne sais pas comment j'ai fini par faire cela. Tout va bien maintenant !!