在python中使用sqlite3:不更新数据库?

在python中使用sqlite3:不更新数据库?,python,sql,sqlite,Python,Sql,Sqlite,我正在编写一个程序来存储密码,但它似乎没有写入数据库。当我“添加密码”时,它不会显示错误,但当我“查找现有密码”时,我得到的只是一个空数组(即[])。请注意,由于直到文件的最后才提交更改,因此我退出、重新加载,然后搜索现有密码 在我的文件夹中,我已经有一个空文件“passwords.db” 这是我的密码: import sys import sqlite3 as lite con = lite.connect("passwords.db") cur = con.cursor() cur.ex

我正在编写一个程序来存储密码,但它似乎没有写入数据库。当我“添加密码”时,它不会显示错误,但当我“查找现有密码”时,我得到的只是一个空数组(即[])。请注意,由于直到文件的最后才提交更改,因此我退出、重新加载,然后搜索现有密码

在我的文件夹中,我已经有一个空文件“passwords.db”

这是我的密码:

import sys
import sqlite3 as lite

con = lite.connect("passwords.db")
cur = con.cursor()

cur.execute("CREATE TABLE if not EXISTS passwords(site VARCHAR(50), username VARCHAR(20), password VARCHAR(20));")

print "Welcome to Passwords.py."

choice = None

while choice == None:
    print "What would you like to do?"
    print "1.) Add new password."
    print "2.) Find existing password."
    print "3.) Update existing password."
    print "4.) Quit."
    choice = raw_input("> ")

    if choice == "1":
        s = raw_input("Which website to add? ")
        name = raw_input("Username to add? ")
        passwd = raw_input("Password to add? ")

        cur.execute("INSERT INTO passwords VALUES (?,?,?)", (s,name,passwd))

        choice = None

    elif choice == "2":
        s = raw_input("Find info for which website? ")

        cur.execute("SELECT * FROM passwords WHERE site=?", (s,))

        print cur.fetchall()

        choice = None

    elif choice == "3":
        s = raw_input("Update info for which website? ")
        name = raw_input("New username? ")
        passwd = raw_input("New password? ")

        cur.execute("UPDATE passwords SET username, password WHERE site=?", (s,))

        choice = None

    elif choice == "4":
        quit()

    else:
        print "Enter 1, 2, or 3."
        choice = None

### cleaning up.

if con:
    con.commit()
    con.close()
令人反感的节目:

laura@laura-AO722:~/Desktop/passwords$ python passwords.py
Welcome to Passwords.py.
What would you like to do?
1.) Add new password.
2.) Find existing password.
3.) Update existing password.
4.) Quit.
> 1
Which website to add? a
Username to add? b
Password to add? c
What would you like to do?
1.) Add new password.
2.) Find existing password.
3.) Update existing password.
4.) Quit.
> 4
laura@laura-AO722:~/Desktop/passwords$ python passwords.py
Welcome to Passwords.py.
What would you like to do?
1.) Add new password.
2.) Find existing password.
3.) Update existing password.
4.) Quit.
> 2
Find info for which website? a
[]

您的更新SQL应该如下所示

cur.execute("UPDATE passwords SET username=?, password=? WHERE site=?", (name, passwd, s,))
这是我得到的输出

>>> 
Welcome to Passwords.py.
What would you like to do?
1.) Add new password.
2.) Find existing password.
3.) Update existing password.
4.) Quit.
> 1
Which website to add? google.com
Username to add? john
Password to add? pass
What would you like to do?
1.) Add new password.
2.) Find existing password.
3.) Update existing password.
4.) Quit.
> 2
Find info for which website? google.com
[(u'google.com', u'john', u'pass')]
What would you like to do?
1.) Add new password.
2.) Find existing password.
3.) Update existing password.
4.) Quit.
> 3
Update info for which website? google.com
New username? john2
New password? pass2
What would you like to do?
1.) Add new password.
2.) Find existing password.
3.) Update existing password.
4.) Quit.
> 2
Find info for which website? google.com
[(u'google.com', u'john2', u'pass2')]
What would you like to do?
1.) Add new password.
2.) Find existing password.
3.) Update existing password.
4.) Quit.
> 

不知道您是否需要此语句中的最后一个逗号:
cur.execute(“从site=?”的密码中选择*,(s,)
。这似乎不对,您的清理代码永远不会执行,在选项4中,使用break语句,而不是quit()语句。