sqlalchemy in_ clause错误

时间:2015-07-24 01:42:16

标签: python postgresql flask sqlalchemy

我有以下代码,它采用年份列表(整数)并创建一个sql查询来查找数据库中与列表中的fiscalyears匹配的fiscalyears:

entries = db.session.query(Post).filter((Post.fiscalyear).in_(years))

然而,当我运行我的代码时,我得到的错误指向查询行:

DataError: (psycopg2.DataError) invalid input syntax for integer: "["
LINE 3: WHERE posts.fy IN ('[', '2', '0', '1', '5', ',', ' ', '...

我不确定为什么查询会以这种方式分解年份列表。当我打印出来时,打印为[2015,2014]。

有关结构的更多信息: 列表'年份'在[2015,2014]中创建了一个函数。然后我打电话给

return redirect(url_for('.yearresults', years=years))

这是

@main.route('/searchresults/<years>')
def yearresults(years):
    entries = db.session.query(Post).filter(Post.fiscalyear.in_(years)).all()
    return render_template('yearsearch.html', entries=entries)

1 个答案:

答案 0 :(得分:0)

我非常确定年份是一个字符串,因此您需要将此字符串转换为列表:

@main.route('/searchresults/<years>')
    def yearresults(years):
    # convert years to list
    years = years.replace('[', '')
    years = years.replace(']', '')
    years = years.split(',')

    entries = db.session.query(Post).filter(Post.fiscalyear.in_(years)).all()
return render_template('yearsearch.html', entries=entries)