python + sqlite:如何使用Order by for column with special letters?

时间:2016-09-28 11:31:58

标签: python sqlite

我想使用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也包含这样的特殊字母。

但我认为编程思路没有错。那么我做错了什么?请帮帮我。感谢。

1 个答案:

答案 0 :(得分:0)

SELECT语句不会修改数据库。

要对表重新排序,必须在实际编写新表时对行进行排序:

INSERT INTO MyTable (ColA, ColB, ColC)
SELECT               ColA, ColB, ColC
FROM TempOldTable
ORDER BY ColA;