【发布时间】:2013-04-24 22:17:49
【问题描述】:
我刚开始编程,并使用 sqlite3 在 pyscripter 中编写了几行代码。
表“gather”是预先创建的。然后我从“收集”中选择某些行以将它们放入另一个表中。我尝试按特定列“日期”对该表进行排序。但这似乎不起作用。它不会给我错误消息或类似的东西。它只是没有排序。如果我在 sqlitemanager 中尝试相同的命令(SELECT * FROM 匹配 ORDER BY 日期),它在完全相同的表上工作正常!这里有什么问题?我用谷歌搜索了一段时间,但我没有找到解决方案。这可能是我想念的愚蠢的东西..
正如我所说,我完全是新手。我猜你们看到代码都会流泪。因此,如果您有任何提示我可以如何缩短代码或使其更快或其他什么,非常欢迎您:) (但除了上述部分之外,一切都很好。)
import sqlite3
connection = sqlite3.connect("gather.sqlite")
cursor1 = connection.cursor()
cursor1.execute('Drop table IF EXISTS matches')
cursor1.execute('CREATE TABLE matches(date TEXT, team1 TEXT, team2 TEXT)')
cursor1.execute('INSERT INTO matches (date, team1, team2) SELECT * FROM gather WHERE team1=? or team2=?, (a,a,))
cursor1.execute("SELECT * FROM matches ORDER BY date")
connection.commit()
【问题讨论】:
-
我有点不清楚到底是什么问题。是 INSERT 工作但 SELECT * FROM 匹配 ORDER BY 日期不是?
-
您实际上是在填充日期列吗?我没看到。
-
它也将它作为字符串排序,而不是按日期排序,因为您指定它是 TEXT ...。在您选择之后,您还需要
results = cursor1.fetchall()... -
@deakolt 问题是命令“SELECT * FROM 匹配 ORDER BY date”在 sqlitemanager 中有效,但如果我在 pyscripter 中运行它则不起作用。
-
@JamesThiele 是的,我确实在日期列中填充了“插入匹配(日期、团队 1、团队 2)SELECT * FROM 收集 WHERE 团队 1=?或团队 2=?,(a,a,)”
标签: python sql sqlite sql-order-by