python动态输入,更新表

时间:2014-06-25 08:39:33

标签: python mysql-python

我编写了一个程序,以便动态更新数据库表,但是我收到了一个错误。我把程序塞进了我不了解的任何东西。这是我的代码:

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()

这是错误:

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

如何解决此问题?

2 个答案:

答案 0 :(得分:1)

您应该将?更改为%s

Here是关于为什么mysqldb使用%s代替?的问题。

答案 1 :(得分:1)

我会这样做:

query = "INSERT INTO films (file123, title_, year, director) VALUES (%s, %s, %s, %s)" % (a.file123, a.title_, a.year, a.director)

cursor.execute(query)

用正确的数据类型替换%s,否则它会尝试所有字符串,这可能会在表级别中断。