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

0 投票
2 回答
1788 浏览
提问于 2025-04-18 05:48

我用我的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

你需要修改这一行:

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

你不需要用两个循环;你可以用一句话就改变所有列的值:

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

撰写回答