Python 在会话提交之前强制SQLAlchemy执行类型转换

Python 在会话提交之前强制SQLAlchemy执行类型转换,python,sqlalchemy,Python,Sqlalchemy,我对sqlite的SQLAlchemy有一个非常基本的模型(实际上它有很多字段): 当我创建新的Board实例时,我用str或unicode的实例填充rank字段。无论类型如何,只要文本包含正确的整数,该值都会正确地进行类型转换并保存在数据库中 r1 = Board( board='United States of America', rank='555' ) session = Session() session.add(r1) session.commit() # So f

我对sqlite的SQLAlchemy有一个非常基本的模型(实际上它有很多字段):

当我创建新的
Board
实例时,我用
str
unicode
的实例填充
rank
字段。无论类型如何,只要文本包含正确的整数,该值都会正确地进行类型转换并保存在数据库中

r1 = Board(
    board='United States of America',
    rank='555'
)

session = Session()
session.add(r1)
session.commit() # So far, so good
在这个例子中,奇怪的是
Board.rank的
type
commit
之前是
str
,之后是
int
,我从一开始就假设它是
int

session.add(r1)
print type(r1.rank)  # <type 'str'>
session.commit()
print type(r1.rank)  # <type 'int'>
会话添加(r1) 打印类型(r1.等级)# session.commit() 打印类型(r1.等级)#
问题是:是否有可能在发出提交之前触发类型转换过程?我需要使用
Board的值。对于其他与db相关的任务,将
列为
int
,因此我希望将调用保留到
会话。最后提交


附言:是的,我知道我可以直接调用
int(my_string)
,但实际上我的模型中有很多字段,鉴于SQLAlchemy已经完成了类型转换过程,我宁愿利用它。

SQLAlchemy没有完成类型转换过程;你的数据库后端可以做到这一点。
session.add(r1)
print type(r1.rank)  # <type 'str'>
session.commit()
print type(r1.rank)  # <type 'int'>