我有一小段代码将一些数据插入数据库。但是,数据正在以相反的顺序插入
如果在for循环运行后我“提交”,它会向后插入,如果我“作为for循环的一部分”提交,它会以正确的顺序插入,但速度要慢得多。
如何在for循环后提交但仍保留正确的顺序?
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 :(得分:1)
您不能依赖SQL数据库表中的任何顺序。插入以依赖于实现的方式进行,并且行最终取决于所使用的存储实现和已存在的数据。
因此,没有发生逆转;如果你再次从表中选择数据并且这些行以相反的顺序返回,那么这是巧合,而不是数据库的选择。
如果行必须按特定顺序返回,请在选择时使用ORDER BY
。例如,您可以按ROWID
订购,可能单调增加新行,从而为您提供插入顺序的近似值。请参阅ROWIDs and the INTEGER PRIMARY KEY。