다른 (아마도 자초 된) 문제가 발생했습니다. Python3.6 및 sqlite 저는 db를 만들고 테이블과 정보를 추가하는 것으로 충분합니다. 내 문제는 내가 원하는 정보가 순차적이지 않다는 것이다. 하지만 DB 내부에서 정렬되기를 원하기 때문에 처리가 더 쉽습니다. 다음은 "datum"이라는 타임 스탬프로 내 테이블 항목을 정렬 (ORDER)해야하는 코드입니다. 우분투에서 sqliteman 내에서 동일한 쿼리를 실행하면 원하는대로 행이 다시 정렬됩니다. 그러나 파이썬으로 시도해도 작동하지 않습니까?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)
"작동하지 않는다"는 것을 확장 할 수 있습니까? 코드를 살펴보면 쿼리 결과를 읽는 데 아무 것도 보이지 않습니다. 따라서 코드 샘플이 불완전한 것으로 보입니다. 파이썬에서 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'는 자료를 검색하고 리턴하는 행을 읽어야합니다. –