Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQL数据库排序_Python_Sql_Sqlite - Fatal编程技术网

Python SQL数据库排序

Python SQL数据库排序,python,sql,sqlite,Python,Sql,Sqlite,我已经开始在Python3.7.6中编程SQL,并开始创建一个“备忘单”,在我尝试对它进行排序之前,一切都很顺利(我在这里使用的示例是对数据库“database1”进行排序,表名为“test1”)。我在网上读过,看到有人在使用代码: SELECT * FROM test1 ORDER BY fname 这似乎是可行的,但我遇到的问题是,它似乎没有以这种有序的形式保存数据库,而这正是我试图实现的(文件根本没有改变;修改的时间没有改变)。我见过其他人附加代码,所以我会在末尾写下相关的部分 def

我已经开始在Python3.7.6中编程SQL,并开始创建一个“备忘单”,在我尝试对它进行排序之前,一切都很顺利(我在这里使用的示例是对数据库“database1”进行排序,表名为“test1”)。我在网上读过,看到有人在使用代码:

SELECT * FROM test1
ORDER BY fname
这似乎是可行的,但我遇到的问题是,它似乎没有以这种有序的形式保存数据库,而这正是我试图实现的(文件根本没有改变;修改的时间没有改变)。我见过其他人附加代码,所以我会在末尾写下相关的部分

def order(fileName, sheet, attributes, condition, ascencion):
    connection = sqlite3.connect(fileName+".db")
    cursor = connection.cursor()
    sql_command = """SELECT *
FROM """ + str(sheet) + "\n"
    sql_command += "ORDER BY "  + str(attributes[0][0])
    if ascencion.lower() == "increasing" or ascencion.lower() == "ascending":
        sql_command += " ASC;"
    elif ascencion.lower() == "decreasing" or ascension.lower() == "descending":
        sql_command += " DESC;"

    cursor.execute(sql_command)
    connection.commit()
    connection.close()
SQL表表示无序集。您真的不应该认为存在任何排序,除非您指定了该排序

因此,只需使用
orderby
子句检索数据即可

也就是说,SQLite是一个基于文件的数据库,因此它可能会保留文件中的顺序,而不考虑查询。然而,由于SQL通常不会以这种方式运行,我建议您不要依赖它

相反,将
fname
声明为表上的主键,或使用
fname
在表上定义聚集索引。您仍然需要按排序,但是使用这些方法应该很少甚至没有开销

为什么它会更改数据库?你只是在读数据。