python dynamic input, update table
Question: I wrote a program in order to dynamically update a database table but I am
getting an error. I stuffed the program with whatever I know little about.
Here's my code:

    
    
    import MySQLdb
    class data:
        def __init__(self):
            self.file123 = raw_input("Enter film: ")
            self.title_ = raw_input("Enter film: ")
            self.year = raw_input("Enter year: ")
            self.director = raw_input("Enter director: ")
    a=data()
    
    db = MySQLdb.connect(host="localhost", # your host, usually localhost
                         user="root", # your username
                          passwd="mysql", # your password
                          db="sakila") # name of the data base
    
    cursor = db.cursor()
    
    cursor.execute("INSERT INTO films (file123, title_, year, director) VALUES (?, ?, ?, ?)", (a.file123, a.title_, a.year, a.director))
    db.commit()
    db.close()
    

This is the error:

    
    
    File "C:\Python27\maybe1.py", line 20, in <module>
     cursor.execute("INSERT INTO films (file123, title_, year, director) VALUES (?, ?, ?, ?)", (a.file123, a.title_, a.year, a.director))
          File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 184, in execute
            query = query % db.literal(args)
        TypeError: not all arguments converted during string formatting
    

How can I fix this issue ?


Answer: You should change `?` to `%s`.

[Here](http://stackoverflow.com/questions/825042/how-do-you-make-the-python-
msqldb-module-use-in-stead-of-s-for-query-paramete) is question about why
mysqldb use `%s` instead of `?`.

