0

我对此很陌生。为了从我最近创建的表中删除所有行,我执行了以下编程序列。

import sqlite3
con=sqlite3.connect('prueba.db')
cur=con.cursor()
cur.execute('''CREATE TABLE tabla1(ExtremoA text,ExtremoZ text,PotenciaRxA real,PotenciaTxA real,PotenciaRxZ real,PotenciaTxZ real,SpanLossAZ real,SpanLossZA real)''')
print "Tabla1 creada exitosamente"
cur.close()
con.close()
con=sqlite3.connect('prueba.db')
cur=con.cursor()
registros=[('Quillota','San felipe',-9,4,-11,3,15,12),('San Felipe','Las Cuevas',-10,2,-12,6,16,14)]
sql='''INSERT INTO tabla1(ExtremoA,ExtremoZ,PotenciaRxA,PotenciaTxA,PotenciaRxZ,PotenciaTxZ,SpanLossAZ,SpanLossZA)VALUES(?,?,?,?,?,?,?,?)'''
cur.executemany(sql,registros)
con.commit()
print "registros creados exitosamente"
cur.execute('''SELECT * FROM tabla1''')
todo=cur.fetchall()
print todo
print len(todo)
for i in range(len(todo)):
    cur.execute('''DELETE FROM tabla1 WHERE rowid=?''',(i,))
con.commit()
print "número total de filas borradas:", con.total_changes
cur.close()
con.close()

我的表“tabla1”有两个条目。当 python 完成并且我再次执行 SELECT 和 fetchall 时,我意识到只有第一个条目已被删除。问题是什么?。我应该在开头声明还是创建一个 rowid 列字段?对不起我的语法。

4

1 回答 1

3

range(2)返回0and 1,但您的rowid值是1and 2

无论如何,要从表中删除所有行,只需WHERE从语句中省略子句DELETE

于 2013-09-12T20:08:20.293 回答