查询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)
为什么我为所有三个查询获得相同的输出?
答案 0 :(得分:2)
这不是错误。这是GIGO的一个案例。您显然使用mysql作为数据库,并且您明确将style_id
列定义为int。就mysql自动类型转换而言,以下都是相等的
373401
373401abc
373401def
它们都代表相同的数字373401.所以结果是正确的。
其他数据库(如postgresql)具有更严格的类型检查。例如,第二个值会产生类似syntax error at abc