我在SQLAlchemy中有一个非常基本的模型,带有sqlite(实际上它有很多字段):
class Board(Base):
__tablename__ = 'board'
id = Column(Integer, primary_key=True)
rank = Column(Integer)
当我创建新的Board
个实例时,我会在rank
字段中填入str
或unicode
的实例。无论类型如何,只要文本包含正确的整数,该值就可以正确地进行类型化并保存在数据库中。
r1 = Board(
board='United States of America',
rank='555'
)
session = Session()
session.add(r1)
session.commit() # So far, so good
此示例中的奇怪之处是type
的{{1}}在Board.rank
之前为str
,之后为commit
,我会假设它从一开始就是int
:
int
问题是:是否可以在发出提交之前触发类型转换过程?对于其他与数据库相关的任务,我需要将session.add(r1)
print type(r1.rank) # <type 'str'>
session.commit()
print type(r1.rank) # <type 'int'>
的值作为Board.rank
,因此我希望将调用留给int
进行结束。
session.commit
,但实际上我的模型中有很多字段,并且鉴于SQLAlchemy已经进行了类型转换过程,我宁愿利用它