AttributeError: 'sqlite3.Cursor' object has no attribute 'commit'
时间: 2023-09-27 21:05:02 浏览: 98
这个错误通常是因为在使用 SQLite 数据库时,尝试在游标对象上调用 `commit()` 方法而不是数据库连接对象。
你可以将游标对象替换为与其相关的数据库连接对象,然后在连接对象上调用 `commit()` 方法。
示例代码:
```python
import sqlite3
# 连接到数据库
conn = sqlite3.connect('example.db')
# 创建游标对象
cursor = conn.cursor()
# 执行 SQL 查询
cursor.execute('SELECT * FROM table_name')
# 将游标对象替换为连接对象并提交更改
conn.commit()
# 关闭数据库连接
conn.close()
```
希望这可以帮助你解决问题!
相关问题
AttributeError: 'pymssql.Cursor' object has no attribute 'commit'
对不起,我之前给出的回答中有误。实际上,`pymssql.Cursor` 对象没有 `commit` 方法。在 `pymssql` 中,提交事务的操作是通过数据库连接对象来完成的。
以下是使用 `pymssql` 将数据插入数据库并提交事务的正确示例:
```python
import pymssql
conn = pymssql.connect(server='服务器名称', user='用户名', password='密码', database='数据库名称')
cursor = conn.cursor()
sql = "INSERT INTO 表名 (列1, 列2, 列3) VALUES (%s, %s, %s)"
values = ('值1', '值2', '值3')
cursor.execute(sql, values)
conn.commit()
cursor.close()
conn.close()
```
请注意,事务的提交是通过调用数据库连接对象 `conn` 的 `commit()` 方法实现的,而不是 `cursor` 对象。在执行完所有数据库操作后,使用 `conn.commit()` 来提交事务。
对于 `pymssql`,另外一个事务的自动提交设置是可选的,默认情况下事务会自动提交。如果你希望手动控制事务的提交和回滚,可以将 `autocommit` 属性设置为 `False`:
```python
conn.autocommit(False)
```
这样,你需要在适当的时候调用 `conn.commit()` 来手动提交事务,并通过 `conn.rollback()` 来回滚事务。
db.commit() ^^^^^^^^^ AttributeError: 'sqlite3.Cursor' object has no attribute 'commit'
这个错误是因为调用了 `cursor.commit()` 方法,而 SQLite 中的事务是由连接对象 `connection` 来控制的,因此需要使用 `connection.commit()` 方法来提交事务。
以下是示例代码:
```python
import sqlite3
# 连接到 SQLite 数据库
conn = sqlite3.connect('example.db')
# 创建表
conn.execute('''CREATE TABLE IF NOT EXISTS user
(id INT PRIMARY KEY NOT NULL,
name TEXT NOT NULL);''')
# 查询用户
user = conn.execute("SELECT * FROM user WHERE id=123").fetchone()
# 如果用户不存在,则添加用户
if not user:
conn.execute("INSERT INTO user (id, name) VALUES (123, 'John')")
conn.commit()
print("用户已添加")
else:
print("用户已存在")
# 关闭数据库连接
conn.close()
```
在上面的代码中,我们使用 `conn.commit()` 方法来提交事务,而不是 `cursor.commit()`。这样可以避免上述错误。