ValueError: el parámetro de operación debe ser str o unicode

Estoy tratando de insertar algunos campos de la base de datos usando python en una base de datos SQLite. Sigo recibiendo el siguiente error:

ValueError: operation parameter must be str 

A continuación se muestra mi código.

 import sqlite3 conn = sqlite3.connect("pass.db") c = conn.cursor() #Create table password table_create_statement = "create table if not exists password(id integer primary key, site text, pass text);" c.execute(table_create_statement) #Promt user to input entry sites = str(raw_input("Enter name of the sites: ")) password = str(raw_input("Enter password: ")) #SQL statement to insert the new entry sql_statement = "insert into password values(?, ?, ?);",(None, sites, password) c.execute((sql_statement)) connection.commit() print("Password entered successfully") 

Salida:

 Enter name of the sites: www.google.com Enter password: abcd Traceback (most recent call last): File "pw.py", line 39, in  c.execute((sql_statement)) ValueError: operation parameter must be str or unicode 

Debe pasar la instrucción y los parámetros de SQL como argumentos separados para execute() . Actualmente estás pasando en una tupla.

Haga esto en su lugar:

 sql_statement = "insert into password values(?, ?, ?);" c.execute(sql_statement, (None, sites, password)) 

Ahora sql_statement es una sola cadena, y los parámetros se pasan como un segundo argumento separado.

Tenga en cuenta que raw_input() ya devuelve un objeto str , no es necesario convertirlo a str nuevamente.