我正在使用flask和sqlalchemy(sqlite)在python中编写我的公司的internel搜索引擎。我目前的问题是我想。
A。)查询描述字段的一定数量的信息 B.)优先查询50个字符之后及之后。
链接字段下谷歌非常类似。如果您搜索某些内容,则会返回包含100个字符的链接。
我正在阅读文档,发现sqlalchemy中没有mid()函数。我也从这篇文章中注意到sqlalchemy只支持max,min和avg sqlalchemy: get max/min/avg values from a table
函数的SQL文档 http://docs.sqlalchemy.org/en/latest/core/functions.html
我试图实现一个查询,例如
links = Item.query(func.mid(Item.description, 0, 200).like('%helloworld%'))
我发布sqlite的语法是Substr并尝试过 Item.query.filter(func.substr(Item.description,0,200)=='%helloworld%')
sqlalchemy有办法解决这个问题吗?
我的代码:
from sqlalchemy.sql.functions import func
def mainSearch(searchterm):
links = Item.query(func.mid(Item.title, 1, 3).Item.title.like('%e%'))
return links
HTML / Jinja代码:
{% for link in links.items %}
<div id="resultbox">
<div id="linkTitle"><h4><a href="{{ link.link }}">{{ link.title }}</a></h4> </div>
<div id="lastUpdated">Last Updated: {{ link.last_updated }} </div>
<div id="linkLink">{{ link.link }}</div>
<div id="linkDescription">{{ link.description | safe }}</div>
</div>
错误
TypeError:&#39; BaseQuery&#39;对象不可调用
我的数据库: 源码
我也希望在sql中进行类似的查询:
SELECT MID(column_name,start,length) AS some_name FROM table_name;
总的来说,我正在尝试对我们在“列描述”中查询的数据执行此操作:
示例文字:
文章(缩写为ART)是与名词一起使用的单词(前缀或后缀),用于表示名词所引用的引用类型。文章规定了名词的语法确定性,在某些语言中扩展到数量或数值范围。英语中的文章是和/和,在某些情况下(在某些情况下)。 &#34;一个&#34;和&#34; a&#34;是现代形式的古英语&#34; an&#34;,在Anglian方言中是数字&#34; one&#34; (比较&#34; on&#34;,在撒克逊方言中)并幸存到现代苏格兰人中作为数字&#34; owan&#34;。两个&#34; on&#34; (已被驱逐&#34;一个&#34;诺曼人)和&#34;&#34;&#34;幸存下来的现代英语,与#34;一个&#34;用作数字和&#34;&#34; (&#34; a&#34;,在以辅音声音开头的名词之前)作为不定冠词。
在许多语言中,文章是一种特殊的语言部分,不容易与其他词性结合。在英语中,文章通常被认为是更广泛的语言类别的一部分,称为决定者,它结合了文章和指示(例如&#34;这&#34;和&#34;&#34;)。
在使用文章的语言中,除了一些例外,每个普通名词都以某种确定性(例如,明确或不确定)表达,就像许多语言表达具有特定语法数字的每个名词一样(例如,单数或复数) 。每个名词必须附有与其明确性相对应的文章(如果有的话),并且缺少一篇文章(被认为是零条款)本身就指明了某种确定性。这与其他形容词和决定者形成对比,后者通常是可选的。文章的这种强制性使它们成为许多语言中最常见的词汇 - 例如,最常用的词是。[1]
文章通常被定性为明确或不确定。[2]具有完善的文章系统的一些语言可以区分其他子类型。在每种类型中,语言可以根据诸如性别,数字或大小写等语法属性或根据相邻声音而具有各种形式的每篇文章。
到此
文章(缩写为ART)是与名词一起使用的单词(前缀或后缀),用于表示名词所引用的引用类型。文章规定了名词的语法确定性,
所以它不会通过抓取100,000个字长的文本来破坏数据库。我只需要前100个
答案 0 :(得分:3)
这与mid
功能无关。错误消息显示'BaseQuery' object is not callable.
您在哪里打电话BaseQuery
?这里:
Item.query(...)
正确的咒语是:
db.session.query(func.mid(...))
或
Item.query.with_entities(func.mid(...))