sqlite 属性 execute 只是只读

6 投票
2 回答
7517 浏览
提问于 2025-04-17 05:53

我正在使用sqlite来创建并连接一个名为foo.db的数据库。

当我尝试往数据库里插入数据时,出现了一个AttributeError错误。

AttributeError: 'sqlite3.Cursor' object attribute 'execute' is read-only

我找不到关于这个错误的任何信息。有没有人知道这个异常是什么意思?

我使用的是python 2.7,并且在virtualenv环境中。

以下是我尝试执行的代码,假设date是一个字符串。

        username = 'user'
        pwdhash = some_hash_function()
        email = 'user@foo.com'
        date = '11/07/2011'

        g.db = sqlite3.connect('foo.db')
        cur = g.db.cursor()            
        cur.execute = ('insert into user_reg (username,pwdhash,email,initial_date)\
                        values (?,?,?,?)',
                        [username,
                         pwdhash,
                         email,
                         date])
        g.db.commit()
        g.db.close()

谢谢!

2 个回答

1

看起来这是一个简单的语法错误。你正在尝试给命令执行设置一个值,其实你只需要调用这个命令就可以了:把'='去掉就没问题了。

5

你想要修改光标的一些属性。也就是说,你想调用光标的一个方法。

正确的写法应该是

    cur.execute('insert into user_reg (username,pwdhash,email,initial_date)\
                    values (?,?,?,?)',
                    [username,
                     pwdhash,
                     email,
                     date])

而不是

    cur.execute = ('insert ...

撰写回答