【发布时间】:2016-12-14 22:14:40
【问题描述】:
我目前正在使用 python 2.7 中的 sqlite 进行项目,需要返回列 A * 列 B 的值大于某个数字的行。下面是代码的样子:
c.execute('SELECT * FROM table_1 WHERE validation=1 AND colA * colB > 10000')
唯一的问题是这不起作用...我知道这在 MySQL 中是可能的,所以我希望它也可以在 sqlite 中工作,尽管我没有任何运气找到完成这项工作的方法。 所以我的问题是:是否可以使用 sqlite 执行这种类型的操作,如果可以,如何?
编辑:这里有更完整的代码,老实说,我假设我有一个小的语法错误,或者根本不可能。因为我的代码很长,我觉得不可能发布所有内容。我要查询的表是这样构建的:
c.execute('CREATE TABLE IF NOT EXISTS table_1(ticker TEXT, colA INTEGER, colB INTEGER, company_name TEXT, market_cap TEXT, sector TEXT, validation INTEGER, UNIQUE(ticker) ON CONFLICT IGNORE)')
表格前几项如下:
ticker,colA,colB,company_name,market_cap,sector,validation
"ACFN","0.18","71,200","Acorn Energy","5.16M","工业","1"
"ADGE","0.3","64,458","American DG","14.71M","Industrial Goods","1"
"ACUR","0.97","66,358","Acura Pharmaceuticals","11.52M","Healthcare","1"
此外,使用以下语句确实会返回上面的最后一行。
c.execute('SELECT * FROM table_1 WHERE validation=1 AND colB > 25000 AND colA> 0.5')
但是如果这个语句返回最后一列,那么我将 colA 与 colB 相乘的原始代码也应该这样做。
【问题讨论】:
-
“唯一的问题是这不起作用” - 为什么不呢?您收到错误还是结果不正确?
-
根据here看来应该支持
*... -
不起作用是什么意思?它会给出错误、空结果还是其他什么?
-
啊,对不起。它返回一个空列表,尽管值在表中。没有错误。
-
您展示的代码完美运行,如here 所示。因此,问题出在您未显示的代码中。请将您的原始程序缩减为显示错误的最短程序。请edit您的问题并将该短程序复制粘贴到您的问题中。请参阅minimal reproducible example 了解更多信息。
标签: python mysql python-2.7 sqlite