如何清除已创建的SQL数据库中所选列中的所有数据?

时间:2014-05-08 09:01:04

标签: python sql sqlite python-3.3

我使用我的sql / python编程知识创建了一个数据库。但是,我想知道如何清除给定列中的所有数据。

我尝试使用的代码如下:

#Creating the Table
import sqlite3 as lite
import sys

con = lite.connect('Test.db')

with con:

    cur = con.cursor()    
    cur.execute('SELECT SQLITE_VERSION()')

    data = cur.fetchone()

    print("SQLite version: %s" % data)

#Adding data
with con:
    cur = con.cursor()    
    cur.execute("CREATE TABLE Users(User_Id INTEGER PRIMARY KEY, Username STRING, Password STRING, Acc_Type STRING, First_Name STRING, Surname STRING, Class STRING, FullName STRING)")
    cur.execute("INSERT INTO Users VALUES(1, 'Admin', 'PassWord567', 'Admin', '', 'Admin', 'None', 'Admin')")
    cur.execute("INSERT INTO Users VALUES(2, 'HamzahA12', 'password', 'Student', 'Hamzah', 'Akhtar', '13E2', 'Hamzah Akhtar')")
#Clearing a Column
column_length = []
with con:
    cur = con.cursor()
    cur.execute("SELECT Username FROM Users")
    rows = cur.fetchall()
    for row in rows:
        row = str(row)
        column_length.append(row)
length = 1
for item in column_length:
    length = str(length)
    with con:
        cur = con.cursor()
        cur.execute("DELETE FROM Users WHERE User_Id = '"+length+"'")
    length = int(length)
    length = length+1

当我运行代码时,它会清除表而不是列。我明白为什么会这样做,但我找不到解决办法?!

2 个答案:

答案 0 :(得分:1)

你不需要两个循环;您可以使用单个语句更改所有列值:

con.cursor().execute("UPDATE Users SET Username = NULL")

答案 1 :(得分:0)

您需要更改一行:

cur.execute("UPDATE Users SET YourColumn=null WHERE User_Id = '"+length+"'")