Py学习  »  Python

sqlite commit不使用python保存更新更改?

tjohn106 • 4 年前 • 834 次点击  

说明

我已经在python3中使用sqlite构建了一个数据库。到目前为止,我对提交保存更改(使用插入命令和删除命令)没有任何问题。但是,我正在尝试使用update命令,但无法保存更改(尽管调用commit(),但它只更改工作内存中的DB)。

Find null values from table and replace it with space - sqlite .

细节

下面是我要执行的当前代码:

self.cursor.execute(f'UPDATE {tbl_name} SET {col_name} = IFNULL({col_name}, "")')
self.conn.commit()

注意,self的定义如下:

Database.conn = sqlite3.connect(self.location + self.name)
Database.cursor = sqlite3.connect(self.location + self.name).cursor()

如前所述,此操作正确;但是,它不会将更改提交到实际数据库。这由用于sqlite的DB browser验证,并在关闭时再次拉取数据并重新执行。

我还将注意到,如果我关闭此程序并重新初始化以再次运行它,它将出错,因为尽管最后一行代码是:

Database.conn.commit() # Save (commit) the changes
Database.conn.close() # Close database

结论

提前感谢,因为我一直在用这个打我的头靠墙,还没有找到像这样的问题在其他地方!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53932
 
834 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Matthias
Reply   •   1 楼
Matthias    4 年前

数据库连接与光标无关。

你知道的

Database.conn = sqlite3.connect(self.location + self.name)
Database.cursor = sqlite3.connect(self.location + self.name).cursor()

Database.conn.commit() 不会提交任何更改 cursor .

Database.conn = sqlite3.connect(self.location + self.name)
Database.cursor = Database.conn.cursor()