Python 在将变量插入sqlite表时,如何防止插入冲突?

Python 在将变量插入sqlite表时,如何防止插入冲突?,python,python-2.7,sqlite,Python,Python 2.7,Sqlite,嘿,我可以写入到表中,除了无法检查数据是否已经存在,如果数据已经存在,则不要写入数据并打印一个值,说明它已经存在 这是我到目前为止所拥有的 def createAccount(): username = raw_input("username: ") password = raw_input("password: ") c.execute("INSERT INTO Logindetails(Username, Password) VALUES (?,?)",

嘿,我可以写入到表中,除了无法检查数据是否已经存在,如果数据已经存在,则不要写入数据并打印一个值,说明它已经存在

这是我到目前为止所拥有的

def createAccount():
    username = raw_input("username: ")
    password = raw_input("password: ")

    c.execute("INSERT INTO Logindetails(Username, Password) VALUES (?,?)",
              (username, password,))
    conn.commit()

感谢您的帮助,这是我的课程作业,我对所有这些都很陌生。

如果您将create table语句更改为以下内容,sqlite将知道每个用户名都必须是唯一的,因为您正在定义一个“主键”,一个必须是唯一的:

c.execute("""CREATE TABLE LoginDetails
             (Username text PRIMARY KEY, Password text)""")
如果随后尝试使用现有用户名在表中插入行,则会发生完整性错误:

IntegrityError: column username is not unique
您可以使用try,except子句捕获此错误(以及类似的其他错误),如下所示(假设您使用的是sqlite3):


我很抱歉没有说清楚,我不希望在一个表中有多个相同的用户名。。。所以我假设插入冲突:谢谢你,我一直很忙,很抱歉回复太晚。
try:
    c.execute("INSERT INTO Logindetails(Username, Password) VALUES (?,?)",(username, password,))
except sqlite3.IntegrityError:
    print("Username already exists!")