Python SQLITE3向后插入

时间:2016-10-10 12:43:58

标签: python sqlite

我有一小段代码将一些数据插入数据库。但是,数据正在以相反的顺序插入 如果在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()

1 个答案:

答案 0 :(得分:1)

您不能依赖SQL数据库表中的任何顺序。插入以依赖于实现的方式进行,并且行最终取决于所使用的存储实现和已存在的数据。

因此,没有发生逆转;如果你再次从表中选择数据并且这些行以相反的顺序返回,那么这是巧合,而不是数据库的选择。

如果行必须按特定顺序返回,请在选择时使用ORDER BY。例如,您可以按ROWID订购,可能单调增加新行,从而为您提供插入顺序的近似值。请参阅ROWIDs and the INTEGER PRIMARY KEY