It's a test db, there's only one record being added to the table. And I 
ensure that with a assertIn() test and it passes.
The original code was:
class Application(mydb.Model):
__tablename__ = 'APPLICATION' 
app_id = mydb.Column(mydb.Integer, primary_key = True)#app_id = 
mydb.Column(mydb.String(30), primary_key = True)
created_datetime = mydb.Column(mydb.DateTime(), primary_key = True)
case_owner = mydb.Column(mydb.String(20), 
mydb.ForeignKey('STAFF.staff_id')) 
applicant = mydb.Column(mydb.String(20), 
mydb.ForeignKey('STUDENT.study_no'))
app_description = mydb.Column(mydb.Text())
case_priority  = mydb.Column(mydb.String(20))
case_status  = mydb.Column(mydb.String(10))
app_decision = mydb.Column(mydb.String(10))
deadline_datetime = mydb.Column(mydb.DateTime())
close_datetime = mydb.Column(mydb.DateTime()) 
std_comment = mydb.Column(mydb.Text())
std_document = mydb.Column(mydb.LargeBinary())
staff_comment = mydb.Column(mydb.Text())
staff_document = mydb.Column(mydb.LargeBinary())

app_category = mydb.Column(mydb.String(30))
applicant_obj = mydb.relationship('Student', backref='application_list')
case_owner_obj = mydb.relationship('Staff', backref='application_list')
__mapper_args__ = {
      'polymorphic_identity':'application',
      'polymorphic_on':app_category
  }

class ProjectApp(Application):
__tablename__ = 'PROJECT_APP'
__table_args__ = (
mydb.ForeignKeyConstraint(
['app_id','created_datetime'],
['APPLICATION.app_id', 'APPLICATION.created_datetime']
), 
) 
app_id = mydb.Column(mydb.Integer, primary_key = True)
created_datetime = mydb.Column(mydb.DateTime(), primary_key = True) 
c_supervisor = mydb.Column(mydb.String(62), 
mydb.ForeignKey('C_SUPERVISOR.c_sup_email'))
u_supervisor = mydb.Column(mydb.String(20), 
mydb.ForeignKey('STAFF.staff_id'))
proj_module = mydb.Column(mydb.String(40), 
mydb.ForeignKey('MODULE.proj_module')) 
proj_title = mydb.Column(mydb.Text())
proj_description = mydb.Column(mydb.Text())
proj_salary = mydb.Column(mydb.Text())
proj_contract = mydb.Column(mydb.LargeBinary())
proj_insurance = mydb.Column(mydb.LargeBinary())
proj_s_date = mydb.Column(mydb.Date())
proj_e_date = mydb.Column(mydb.Date())
proj_h_date = mydb.Column(mydb.Date())
csupervisor_obj = mydb.relationship('CSupervisor', 
backref='projectapp_list')
usupervisor_obj = mydb.relationship('Staff', backref='projectapp_list')
module_obj = mydb.relationship('Module', backref='projectapp_list')
__mapper_args__ = {
      'polymorphic_identity':'projApp',
  }

#test
def create_new_internship_app(self, student): 
internship_app = ProjectApp(
app_id=None,
created_datetime=datetime.date.today(),
#deadline_datetime=datetime.date.today() + 
datetime.timedelta(days=PROCESS_TIMEFRAME[CASE_PRIORITY['Project app']]),
c_supervisor=None,
u_supervisor=None,
proj_module=None,
proj_title='Internship',
proj_description='It\'s long story',
proj_salary='No salary',
proj_contract=None,
proj_insurance=None,
proj_s_date=datetime.date(2014,2,1), 
proj_e_date=datetime.date(2014,5,30), 
proj_h_date=datetime.date(2014,6,1),
#std_comment=None,
#std_document=None
)
mydb.session.add(internship_app)
mydb.session.commit()
internship_app_rst = mydb.session.query(ProjectApp).one()
self.assertIs(internship_app_rst, internship_app) 
self.assertEquals(internship_app_rst.proj_s_date , 
internship_app.proj_s_date)
                return internship_app
On Sunday, June 21, 2015 at 7:20:04 PM UTC+2, Michael Bayer wrote:
>
>  did you try adding an ORDER BY to that query?  calling query.first() will 
> return only the first result in an unordered list.  It is essentially 
> random.
>
>
> On 6/21/15 12:45 PM, Kevin Qiu wrote:
>  
>  I create a unit test that add new ProjApp object to the database, but 
> the returned object shows it is not the same object inserted, I don't 
> follow why it's like this because I have others tests on inserting a row to 
> a different table, and returned shows the same row object.
>
>  Test result:
>
>          self.assertIs(internship_app_rst, internship_app)
>     AssertionError: <project.models.ProjectApp object at 
> 0x0000000003EE7E10> is not <project.models.ProjectApp object at 0x0
>     000000003EE7710> 
>
>  Test:
>
>      def create_new_internship_app(self, student): 
>     internship_app = ProjectApp(
>     app_id=None,
>     created_datetime=datetime.date.today(),
>     proj_title='Long story'
>     )
>     mydb.session.add(internship_app)
>     mydb.session.commit()
>     internship_app_rst = mydb.session.query(ProjectApp).first()
>     self.assertIs(internship_app_rst, internship_app) 
>
>   
>  Model:
>
>      class Application(mydb.Model):
>     __tablename__ = 'APPLICATION' 
>     app_id = mydb.Column(mydb.Integer, primary_key = True)
>     created_datetime = mydb.Column(mydb.DateTime(), primary_key = True) 
>         app_description = mydb.Column(mydb.Text())
>         app_category = mydb.Column(mydb.String(30))
>     case_owner_obj = mydb.relationship('Staff', 
> backref='application_list')
>     __mapper_args__ = {
>           'polymorphic_identity':'application',
>           'polymorphic_on':app_category
>       }
>     class ProjectApp(Application):
>     __tablename__ = 'PROJECT_APP'
>     __table_args__ = (
>     mydb.ForeignKeyConstraint(
>     ['app_id','created_datetime'],
>     ['APPLICATION.app_id', 'APPLICATION.created_datetime']
>     ), 
>     
>     ) 
>     app_id = mydb.Column(mydb.Integer, primary_key = True)
>     created_datetime = mydb.Column(mydb.DateTime(), primary_key = True) 
>         proj_title = mydb.Column(mydb.Text())
>     __mapper_args__ = {
>           'polymorphic_identity':'projApp',
>       }
>  -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sqlalchemy+...@googlegroups.com <javascript:>.
> To post to this group, send email to sqlal...@googlegroups.com 
> <javascript:>.
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.
>
>
>  

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to