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!")