Python 在会话提交之前强制SQLAlchemy执行类型转换
我对sqlite的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
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'>