使用不同的ID字符串获取filter和filter_by的相同实例

时间:2017-03-09 11:40:09

标签: python oracle sqlalchemy

查询1

style_id = u'373401'
self.session.query(ChromeYearMakeModelStyle).\
    filter_by(chromestyle_id=style_id).one()

ChromeYearMakeModelStyle(373401)

查询2

style_id = u'373401abc'
self.session.query(ChromeYearMakeModelStyle).\
    filter_by(chromestyle_id=style_id).one()

ChromeYearMakeModelStyle(373401)

查询3

style_id = u'373401def'
self.session.query(ChromeYearMakeModelStyle).\
    filter_by(chromestyle_id=style_id).one()

ChromeYearMakeModelStyle(373401)

为什么我为所有三个查询获得相同的输出?

1 个答案:

答案 0 :(得分:2)

这不是错误。这是GIGO的一个案例。您显然使用mysql作为数据库,并且您明确将style_id列定义为int。就mysql自动类型转换而言,以下都是相等的

373401
373401abc
373401def

它们都代表相同的数字373401.所以结果是正确的。

其他数据库(如postgresql)具有更严格的类型检查。例如,第二个值会产生类似syntax error at abc

的内容