我是新手。我做了以下编程序列,以便删除我最近创建的表中的所有行。
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列字段吗?抱歉我的语法。
答案 0 :(得分:3)
range(2)
会返回0
和1
,但您的rowid
值为1
和2
。
无论如何,要删除表中的所有行,只需省略WHERE
语句中的DELETE
子句。