使用MID()的Python SQLALCHEMY查询

时间:2016-05-30 17:32:51

标签: python sql flask sqlalchemy flask-sqlalchemy

我有一个数据库,我正在尝试使用MID()函数查询信息。在普通的SQL中,我会使用MID,如(来自W3示例网站)..

Integral

将此转换为sqlalchemy一直是一个挑战。我可以使用分页执行查询,但不能使用mid。到目前为止我有 有效的原始查询..

SELECT MID(City,1,4) AS ShortCity
FROM Customers; 

将其转换为无效..

   links = Item.query.filter(Item.title.like('%' +search_term +'%')).paginate(page, 10, True)

我只想要标题中的x-y字符数量(字符串列)

1 个答案:

答案 0 :(得分:1)

我可以看到您在

中的括号中缺少逗号,
func.mid(Item.title.like, 1, 3)('%' +search_term + '%')

使括号中的第二个表达式成为第一个表达式的参数。这是异常的来源

TypeError: 'Function' object is not callable.

但是,要生成LIKE运算符,请尝试:

func.mid(Item.title, 1, 3).like('%' +search_term + '%')

这为您提供了python代码似乎建议的WHERE子句。 在您的代码中,like放错地方了。

但是,如果要生成以下SQL:

SELECT MID(City,1,4) AS ShortCity
FROM Customers; 

适当的sqlalchemy代码将是

session.query(func.mid(Customer.city, 1, 4).label('ShortCity'))

假设模型名为Customer并且有一个名为city的字段。