【发布时间】:2016-10-05 18:27:18
【问题描述】:
我正在我的公司使用烧瓶和 sqlalchemy(sqlite) 用 python 编写内部搜索引擎。我目前的问题是我想这样做。
A.) 查询描述字段的一定数量的信息 B.) 最好在 50 个字符之前和之后进行查询。
在链接字段下与 google 非常相似。如果您搜索某些内容,它会返回下面有 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: 'BaseQuery' 对象不可调用
我的数据库: Sqlite
我也想用类似的sql查询:
SELECT MID(column_name,start,length) AS some_name FROM table_name;
总的来说,我正在尝试对我们在列描述中查询的数据执行此操作:
示例文字:
冠词(缩写为 ART)是一个词(前缀或后缀),与名词一起使用,表示名词所指的类型。冠词指定名词的语法确定性,在某些语言中扩展到体积或数字范围。英语中的冠词是 the and a/an, and (in certain contexts) some。 “an”和“a”是古英语“an”的现代形式,在盎格鲁方言中是数字“one”(比较撒克逊方言中的“on”),并在现代苏格兰语中作为数字“owan”幸存下来。 “on”(诺曼人改写为“one”)和“an”都在现代英语中幸存下来,“one”用作数字,“an”(“a”,在以辅音开头的名词之前)作为不定冠词。
在许多语言中,冠词是一种特殊的词性,不能轻易地与其他词性组合。在英语中,冠词通常被认为是更广泛的语音类别的一部分,称为限定词,它结合了冠词和指示词(例如“this”和“that”)。
在使用冠词的语言中,除了某些例外,每个普通名词都以一定的确定性(例如,定的或不定的)来表达,就像许多语言用特定的语法数字(例如,单数或复数)来表达每个名词一样.每个名词必须伴随冠词,如果有的话,对应于它的确定性,并且缺少冠词(被认为是零冠词)本身就指定了一定的确定性。这与其他形容词和限定词形成对比,后者通常是可选的。冠词的这种强制性使其成为许多语言中最常用的词之一——例如,在英语中,最常用的词是 the。[1]
冠词通常被定性为确定的或不定的。[2]少数具有完善的冠词系统的语言可能会区分其他子类型。在每种类型中,根据性别、数字或大小写等语法属性,或根据相邻的声音,语言的每篇文章可能有不同的形式。
到此
冠词(缩写为 ART)是一个词(前缀或后缀),与名词一起使用,表示名词所指的类型。冠词指明名词的语法确定性,
所以它不会通过抓取 100,000 字长的文本而导致数据库崩溃。我只需要前 100 个
【问题讨论】:
-
这是用于 SQL 数据库的,对吗?不是 Postgres 或 MySQL?
-
SQLAlchemy 不会“实现”您列出的任何函数。
func是通用的(具有一些可移植性支持)并生成您向其抛出的任何 SQL 函数表达式。您正在使用什么数据库,它是否具有您希望使用的mid功能?此外,如果您有错误,请包括它和完整的回溯。 -
来自文档“任何名称都可以赋予 func。如果 SQLAlchemy 不知道函数名称,它将完全按原样呈现。”
标签: python sql sqlalchemy flask-sqlalchemy