2016-10-10 3 views
-1

데이터베이스에 데이터를 삽입하는 작은 코드가 있습니다. 그러나 데이터가 역순으로 삽입되고 있습니다.
for 루프가 실행 된 후 "커밋"되면 역순으로 삽입합니다. for 루프의 일부로 "커밋"하면 올바른 순서로 삽입되지만 속도는 훨씬 느립니다.
for 루프 뒤에 커밋 할 수 있지만 올바른 순서를 유지할 수 있습니까? 당신은 에 SQL 데이터베이스 테이블의 모든 순서를 의존 할 수Python SQLITE3 뒤로 삽입

import subprocess, sqlite3 
output4 = subprocess.Popen(['laZagne.exe', 'all'], stdout=subprocess.PIPE).communicate()[0] 
lines4 = output4.splitlines() 

conn = sqlite3.connect('DBNAME') 
cur = conn.cursor() 


for j in lines4: 
    print j 
    cur.execute('insert into Passwords (PassString) VALUES (?)',(j,)) 
conn.commit() 
conn.close() 
+0

왜 주문이 중요합니까? – polku

+1

거꾸로 무엇을 의미합니까? 삽입 순서는 어떤 방식 으로든 데이터베이스에 어떤 영향을 줍니까? line4 목록을 항상 뒤집을 수 있습니다. –

+0

데이터베이스 테이블이 정렬되지 않습니다. 'ORDER BY'를 사용하여 특정 순서로 행을 생성하도록 요청할 수 있습니다. –

답변

1

. 삽입은 구현에 따라 이루어지며, 행이 끝나는 곳은 사용 된 스토리지 구현과 이미 존재하는 데이터에 따라 달라집니다.

이와 같이, 역전은 일어나지 않는다; 테이블에서 데이터를 다시 선택하고이 행이 역순으로 나타나면 데이터베이스가 선택한 것과 일치하지 않으며 선택 사항이 아닙니다.

행을 특정 순서로 다시 가져와야하는 경우 선택시 ORDER BY을 사용하십시오. 예를 들어 ROWID으로 주문할 수 있습니다. 어느 일 수 있습니다.은 새로운 행에 대해 단조롭게 증가하므로 삽입 순서에 대한 근사값을 제공합니다. ROWIDs and the INTEGER PRIMARY KEY을 참조하십시오.

관련 문제