提交是在连接或游标上使用的吗?

Yab*_*usa 4 python sqlite commit python-3.x

名为“实用编程:第二版”的书有冲突的代码。这是我的代码的开始:

import sqlite3

con = sqlite3.connect('stackoverflow.db')    
cur = conn.cursor()
Run Code Online (Sandbox Code Playgroud)

要提交,我会使用con.commit()cur.commit()还是有不同的时间来使用每个?摘自书中:

con.commit()

骗局提交

cur.commit()

cur.commit()

文档显示con.commit()

在此输入图像描述

Yab*_*usa 5

我听取了unutbu的建议并亲自尝试了。

示例代码:

import sqlite3

con = sqlite3.connect('db.db')
cur = con.cursor()

data = [('data', 3), ('data2', 69)]

cur.execute('CREATE TABLE Density(Name TEXT, Number INTEGER)')

for i in data:
    cur.execute('INSERT INTO Density VALUES (?, ?)', (i[0], i[1]))

cur.commit()
Run Code Online (Sandbox Code Playgroud)

PyCharm 运行:

Traceback (most recent call last):
  File "/Users/User/Library/Preferences/PyCharmCE2018.1/scratches/scratch_2.py", line 13, in <module>
    cur.commit()
AttributeError: 'sqlite3.Cursor' object has no attribute 'commit'
Run Code Online (Sandbox Code Playgroud)

教科书错误。cur.commit()不存在。

谢谢unutbu和s3n0