Python - SQLite3 - 更新无法通过输入工作

时间:2018-01-31 19:14:48

标签: python sqlite

我尝试通过输入更新我的数据库。

import sqlite3

conn = sqlite3.connect('datenbank.db')
print ("Opened database successfully")

kunde1 = input("Der Kundename: ")
anzahl1 = input("Anzahl Bewertung: ")


conn.execute('''UPDATE kundenname SET anzahl = ? WHERE kundename = ?''',    
(anzahl1, kunde1))
conn.commit

它剂量显示任何错误..但它没有在DB中更新? 非常感谢!

1 个答案:

答案 0 :(得分:1)

conn.commit不会调用commit,而只是访问其实例。因此,简单的commit调用和文件关闭应该可以解决问题:

import sqlite3
conn = sqlite3.connect('datenbank.db')
print ("Opened database successfully")
kunde1 = input("Der Kundename: ")
anzahl1 = input("Anzahl Bewertung: ")
conn.execute('''UPDATE kundenname SET anzahl = ? WHERE kundename = ?''', (anzahl1, kunde1))
conn.commit()
conn.close()

因为您在执行序列的中间输入数据,所以最好使用contextmanager

import contextlib

@contextlib.contextmanager
def update_database(kunde1, anzahl1):
   conn = sqlite3.connect('datenbank.db')
   print ("Opened database successfully")
   yield conn #can be used later to update database in or outside the scope of "with"
   conn.execute('''UPDATE kundenname SET anzahl = ? WHERE kundename = ?''', (anzahl1, kunde1))
   conn.commit()
   conn.close()

with update_database(input("Der Kundename: "), input("Anzahl Bewertung: ")) as b:
   pass #do something after