Python:使用格式化将行插入数据库

时间:2011-06-30 20:27:18

标签: python mysql mysql-python

我正在尝试将一行插入到我在数据库中设置的表中。

我的代码:

cursor.execute("""INSERT INTO scan (prefix, code_id, answer, station) VALUES(%s, %s, %s, %s, timestamp, comport)""",[(prefix, code_id, answer, station)])

我遇到的错误是说它不喜欢“[]”中的内容。

我不完全理解“%s”的工作原理。我尝试了很多例子,但都失败了。

我从http://mysql-python.sourceforge.net/MySQLdb.html

得到了这个例子

3 个答案:

答案 0 :(得分:2)

为什么在两组括号内有参数?第二个参数应该是一个包含四个项目的序列,以匹配查询中的四个%s。相反,你给它一个包含一个项目的列表:该项目是一个包含四个项目的序列。

相反,请尝试:

cursor.execute("""INSERT INTO scan (prefix, code_id, answer, station) VALUES(%s, %s, %s, %s, timestamp, comport)""",(prefix, code_id, answer, station))

答案 1 :(得分:0)

cursor.execute('INSERT INTO scan (prefix, code_id, answer, station) VALUES("%s", "%s", "%s", "%s")' %(prefix, code_id, answer, station))

如果您错过""周围的%s,即使您在值中使用%s而非"%s",则可能会收到错误。

答案 2 :(得分:-1)

您可以使用Python的新“格式”字符串方法:

cursor.execute("""INSERT INTO scan (prefix, code_id, answer, station) VALUES({}, {}, {}, {}, timestamp, comport)""".format(prefix, code_id, answer, station))

您还可以为参数编号,例如“{0}”,“{1}”等。这可能是必需的,具体取决于您的Python版本(我认为2.6已经支持没有编号的参数)。

有关使用此功能的参考,请检查http://docs.python.org/library/string.html#format-examples