我有一个课程如下
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Student(Base):
__tablename__ = 'students'
student_id = Column(Integer, primary_key=True)
address = Column(String)
name = Column(String)
def __init__(self, address, name):
self.address = address
self.name = name
以下是我的电话
def test_Student(self):
from School.Student import Student
address = 'India'
name = 'Team A'
student = Student(address,name)
print student.student_id
student.student_id is returning None
,
为什么它返回None?我应该将测试用例写成assertIsNone
。
答案 0 :(得分:3)
您的student
对象是transient,并且数据库中没有任何标识。假设student_id
是自动生成的,它将为None
,直到您在会话中保留此对象为止。
session.add(student)
session.flush()
但是,如果您正在编写测试,请注意不要提交会话(因此将测试数据添加到数据库中)。这将涉及为每个测试打开一个新事务,并在测试结束时将其回滚
答案 1 :(得分:1)
您需要先保存学生才能获得自动增量ID。
session.add(student)