sqlalchemy.exc.ArgumentError: Textual SQL expression '' should be explicitly declared as text('')

1. 背景与问题

安装了scrapyd环境,编译器为python3.5。用db.session.query.filter()语句进行数据库查询操作。之前没有报错的代码,现在报错了。

报错信息
sqlalchemy.exc.ArgumentError: Textual SQL expression ‘’ should be explicitly declared as text(’’)

错误原因
因为安装的python包依赖sqlalchmy版本不一致造成的。参考:解决 sqlalchemy报Textual SQL expression should be explicitly declared as text的错误
在这里插入图片描述

2. 解决办法
# 原代码
db_sessioin_query = db.session.query(DataTable.data_id,
        DataTable.con_title, DataTable.con_time, DataTable.con_author, DataTable.data_address,
        DataTable.data_spidername, DataTable.category)
        
filter_result = db_sessioin_query.filter(
        and_(DataTable.con_time > s_time if s_time != "" else "",
             DataTable.con_time < e_time,
             DataTable.con_title.like("%" + p_title + "%") if p_title is not None else "",
             DataTable.con_author.like("%" + p_author + "%") if p_author  is not None else "",
             DataTable.data_address.like("%" + p_website + "%") if p_website is not None else "")
        ).order_by(desc(DataTable.data_id)).limit(limit).offset(offset).all()

把"“变成text(”")

# 修改后       
filter_result = db_sessioin_query.filter(
    and_(DataTable.con_time > s_time if s_time != "" else "",
         DataTable.con_time < e_time,
         DataTable.con_title.like("%" + p_title + "%") if p_title is not None else text(""),
         DataTable.con_author.like("%" + p_author + "%") if p_author is not None else text(""),
         DataTable.data_address.like("%" + p_website + "%") if p_website is not None else text(""))
).order_by(desc(DataTable.data_id)).limit(limit).offset(offset).all()
3. 参考连接

CSDN:解决 sqlalchemy报Textual SQL expression should be explicitly declared as text的错误

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值