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

时间:2017-03-03 19:07:30

标签: python sqlalchemy

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

class Board(Base):
    __tablename__ = 'board'

    id = Column(Integer, primary_key=True)
    rank = Column(Integer)

当我创建新的Board个实例时,我会在rank字段中填入strunicode的实例。无论类型如何,只要文本包含正确的整数,该值就可以正确地进行类型化并保存在数据库中。

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进行结束。

PS:是的,我知道我可以调用session.commit,但实际上我的模型中有很多字段,并且鉴于SQLAlchemy已经进行了类型转换过程,我宁愿利用它

0 个答案:

没有答案