2011-11-08 4 views
2

Я использую SQLite для создания и подключения к БД SQLite foo.dbSQLite атрибут выполнения только для чтения

Когда я пытаюсь делать вставки в БД. Я получаю следующее AttributeError

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

Возможно, я не могу найти информацию об этой ошибке. Кто-нибудь знает, что означает это исключение?

Я использую python 2.7 с virtualenv.

Ниже приведен код, который я пытаюсь выполнить. Дата принятия - это строка.

 username = 'user' 
     pwdhash = some_hash_function() 
     email = '[email protected]' 
     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() 

Благодаря

+0

Ошибка означает то, что она говорит: вы пытаетесь назначить атрибут, доступный только для чтения. Не видя кода, трудно сказать, почему это происходит. – kindall

+0

извините, отредактированный с кодом – sasker

ответ

3

Вы пытаетесь изменить атрибут курсора. Вы хотите вызвать метод курсора.

Это должно быть

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

Не

cur.execute = ('insert ... 
+1

OMG Я идиот. Благодарим за выявление проблемы синтаксиса – sasker

1

Кажется, простая ошибка синтаксиса. Вы пытаетесь установить значение для выполнения команды, пока вы только что назовёте ее: удалите '=', и все должно быть хорошо.

Смежные вопросы