我想使用order by
对其中一列进行排序。这个专栏名称为ColA,包含许多特殊字母。以下是ColA的示例:
ColA
Abc
D6
(8)
-s
'st
9-57
6s
A&C
5
Über
ру́сский
W/WO
我尝试使用以下代码。
import sqlite3
# Connect
WorkingFile = "C:\\test.db"
con = sqlite3.connect(WorkingFile)
cur = con.cursor()
# Sort data by ColA
cur.execute("SELECT * FROM MyTable ORDER BY ColA ASC;")
print "sorted"
con.commit()
#rename the table:
cur.execute("ALTER TABLE MyTable RENAME TO TempOldTable;")
#Then create the new table with the missing column:
cur.execute('''CREATE TABLE MyTable
(WorkingID INTEGER PRIMARY KEY AUTOINCREMENT,
ColA TEXT,
ColB TEXT,
ColC TEXT);
''')
#And populate it with the old data:
cur.execute('''INSERT INTO MyTable (ColA, ColB, ColC)
SELECT ColA, ColB, ColC
FROM TempOldTable;''')
#Then delete the old table:
cur.execute("DROP TABLE TempOldTable;")
# Finish
con.commit()
cur.close()
在这里,我要创建一个新表,将ColA定义为TEXT
数据类型,并将已排序的数据复制到其中。
但它没有对数据库文件进行任何更改。
好吧,我支持ColB和ColC也包含这样的特殊字母。
但我认为编程思路没有错。那么我做错了什么?请帮帮我。感谢。
答案 0 :(得分:0)
SELECT语句不会修改数据库。
要对表重新排序,必须在实际编写新表时对行进行排序:
INSERT INTO MyTable (ColA, ColB, ColC)
SELECT ColA, ColB, ColC
FROM TempOldTable
ORDER BY ColA;