【问题标题】:SQLite Query with Python 1使用 Python 1 进行 SQLite 查询
【发布时间】:2016-09-14 17:20:47
【问题描述】:

我已经生成了一个列表并且能够生成结果:

l = [2, 3, 5, 2009 ]

cur1 = cur.execute('SELECT * from table where + or '.join(('Code = ' + str(n) for n in l)))

但是,我想在同一语句中放入另一个查询,如下所示:

cur1 = cur.execute('SELECT * from table where '
**'Timestamp in (select max(timestamp) from table)'**
+ ' or '.join(('Code = ' + str(n) for n in l)))

但是生成了

 sqlite3.OperationalError: near "Code": syntax error. 

请告知我如何将 Timestamp 语句放入第一条语句中,以便专注于我想要的查询结果。

【问题讨论】:

  • 'Code = 2SELECT * from table where + or Code = 3SELECT * from table where + or Code = 5SELECT * from table where + or Code = 2009' 这就是您的第一个查询的样子,您是说这有效吗?
  • 我是 sqlite 和 Python 的新手...... :)

标签: python python-3.x sqlite


【解决方案1】:

你的第一个是假的,第二个当然也是假的。

>>> 'SELECT * from table where + or '.join(('Code = ' + str(n) for n in l))
>>> 'Code = 2SELECT * from table where + or Code = 3SELECT * from table where + or Code = 5SELECT * from table where + or Code = 2009'

这不是一个有效的 SQL 语句。

SQLite SELECT equal to one of two values

正确的查询语句应该是:

SELECT * FROM table WHERE Code in ('2', '3', '5', '2009')

你会得到它:

cur.execute('SELECT * FROM table WHERE Code in ?', str(tuple(str(i) for i in l)))

现在您可以在第二个语句中使用相同的参数。

P/S:有更好的解决方案,但我没有 SQLite 数据库来检查它。

【讨论】:

  • julivico: 有一个 sqlite3.OperationalError: near "%": 你的代码有语法错误...请帮助...
  • 对不起,应该是?而不是%
猜你喜欢
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 2019-04-03
  • 2012-12-04
相关资源
最近更新 更多