私は別の(おそらく自前の)問題に遭遇しました。 Python3.6とsqlite 私はdbを作成し、テーブルや情報を追加するだけで十分です。私の問題は、私が願っている情報は逐次的ではないということです。しかし、私はそれをdb内でソートしたいので、処理が簡単です。以下は私のテーブルエントリを "datum"という名前のタイムスタンプでソート(ORDER)するコードです。 ubuntu上でsqlitemanの中から同じクエリを実行すると、それが動作し、私が望むように行を並べ替えます。しかし、私はPythonでそれを試しても動作しませんか?python sql ORDER date does not work
con = lite.connect(db_name)
with con:
try:
cur = con.cursor()
strExec = "SELECT * FROM " + db_table_name + " ORDER BY datum ASC"
cur.execute(strExec)
con.commit()
except Error as e:
print(e)
cur.close()
con.close()
ここに、そのテーブル内のデータムのエントリがあります。何百ものエントリがありますが、私はここにいくつかしか示していません。
2017-12-23T00:00:00
2017-12-25T00:00:00
2017-12-24T00:00:00
2017-12-21T00:00:00
2017-12-24T00:00:00
2017-12-26T00:00:00
2017-12-12T00:00:00
ここで私が迷っているものはありますか? ありがとう!
# ============================
# EDIT
# ============================
以下に説明するように、データがdbテーブルに格納される順序は完全に無関係です。データは、順序付けされ、データのみで作業するときに必要な順序で配置する必要があります。したがって、以下のコードスニペットは、そのデータを希望の順序に得るための一例です。
db_result = cur.fetchall()
for row in db_result:
print(row)
「うまくいかない」とはどういう意味ですか?コードを見ると、クエリの結果を読み込もうとするものは何も表示されません。そのため、コードサンプルが不完全である可能性があります。 PythonでDB2.0 APIを思い出すと、次のようになります: 'cur.execute(query); cur.fetchall() '([fetchall](https://docs.python.org/2/library/sqlite3.html#sqlite3.Cursor.fetchall))。 [さらにカーソルの行を反復するだけです] – nerdwaller
そのクエリを実行すると、自動的にデータベーステーブルの順序が自動的に変更されますか? –
'cur.execute'に続いて' con.commit'が正確に何をすると思いますか? 'commit'はDBを変更する場合にのみ機能し、' SELECT'は何も変更しません。あなたが使っているコードを見ると、あなたの質問は実際には書かれているように多くの意味をなさない。 'SELECT'はデータを取得し、それが返す行を読み取らなければなりません。 –