【问题标题】:using limits to query sqlite table in python在python中使用限制查询sqlite表
【发布时间】:2014-03-01 21:56:19
【问题描述】:

我正在尝试使用 python 的基本 sqlite 表返回多行。我从教程中稍微修改了代码:

 import sqlite3
 conn = sqlite3.connect('SQL_test_3.db') #this creates a seperate file
 c = conn.cursor()

c.execute('drop table if exists stocks')
c.execute('''create table stocks
(date text, trans text, symbol text,
 qty real, price real)''')

data = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
      ('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),
      ('2006-04-06', 'SELL', 'IBM', 500, 53.00),
      ('0000-00-00', 'Test', 'Test', 100, 100)
     ]

 for t in data:
     c.execute('insert into stocks values (?,?,?,?,?)', t)

conn.commit()

price = 72
t = (price,)

c.execute('select * from stocks where price=? limit 2', t)
print c.fetchall()

我希望它返回:

[(u'2006-04-05', u'BUY', u'MSFT', 1000.0, 72.0)]
[(u'2006-04-06', u'SELL', u'IBM', 500.0, 53.0)]

我想过使用命令:

c.execute('select * from stocks where price=? limit 2', t)

但它只返回第一行。我尝试使用偏移量,但这似乎不起作用。有谁知道如何解决这个问题?如果有人可以提供帮助,将不胜感激。谢谢。

【问题讨论】:

  • @uʍopǝpısdn 是的,只返回一行。我希望返回多行 - 基于价格所在的位置。

标签: python sql database sqlite


【解决方案1】:

在没有LIMIT 的情况下也只返回1 行。这不是LIMIT 的问题。

问题是查询中的 WHERE 部分:price = 72 仅匹配 1 行。

【讨论】:

  • 好的。我想要的是返回价格为 72 的行,但我也想要之后的行。如果 LIMIT 不是答案,那是什么?
  • @dave 在 SQL 表中,未定义行顺序。请编辑您的问题以具体说明“之后”的确切含义。
  • @CL。我所说的“之后”的意思是我想要识别包含价格的行 - 返回它的行然后返回表中的下一行。本质上,我想从起始位置找到一系列行。在这种情况下,我希望起始位置是价格。所以当我找到某个值的价格时,返回它的行和下一个相邻的行。我希望我说得通。对不起,如果我不是。
  • 没有“表格中的下一行”。订单无法保证,也不会保持不变。您必须明确地SORT 您的查询。如果您想要比72SORT BY priceWHERE price <= 72LIMIT 便宜的商品。
猜你喜欢
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多