Заказ SQL баз данных - PullRequest
       0

Заказ SQL баз данных

0 голосов
/ 25 января 2020

Я начал программировать SQL в Python 3.7.6 и начал создавать «шпаргалку», и все прошло хорошо, пока я не попробую упорядочить его (пример, который я здесь использую, это упорядочение базы данных » 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()

1 Ответ

0 голосов
/ 25 января 2020

SQL таблица представляет неупорядоченные наборы. Вы действительно не должны думать, что существует какое-либо упорядочение, если только вы не указали это упорядочение.

Итак, просто извлеките данные, используя предложение order by.

При этом SQLite - это файл- базируется на базе данных, поэтому она, вероятно, сохраняет порядок в файле независимо от запроса. Однако, поскольку SQL в целом не ведет себя таким образом, я бы рекомендовал вам не зависеть от него.

Вместо этого объявите fname как первичный ключ таблицы или определите кластеризованный индекс для таблица с использованием fname. Вам все еще понадобится order by, но при использовании этих методов

не должно быть никаких накладных расходов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...