在python中执行很多错误

时间:2011-05-21 08:46:24

标签: python mysql linux

我正在学习python而且我是新的bie。 我试图使用mysql和python的函数,我得到错误

这是我的剧本

import MySQLdb
def insert_values(cursor, values):
    #cursor = self.connection.cursor()
    cursor.executemany("""
        insert into pythontest (name1,name2,name3)
        values (%s, %s, %s)""", values)
    cursor.close()

db = MySQLdb.connect("localhost","root","root","python" )
cursor = db.cursor()

var1 = ['name1','name2','name3']
insert_values(cursor,var1)

db.close()

因为我正在学习,可能会有很多错误

  

1)我不知道如何通过db   函数中的对象或传递cusrsor   没关系。因为我必须打电话给那个   在for循环中多次运行

     

2)是数组值的语法   进入数据库

错误

File "mysql.py", line 10, in insert_values
    values (%s, %s, %s)""", values)
  File "build/bdist.linux-i686/egg/MySQLdb/cursors.py", line 216, in executemany
  File "build/bdist.linux-i686/egg/MySQLdb/connections.py", line 36, in defaulterrorhandler
_mysql_exceptions.ProgrammingError: not enough arguments for format string

2 个答案:

答案 0 :(得分:2)

cursor.executemany("""
        insert into pythontest (name1,name2,name3)
        values (%s, %s, %s)""", *values)

答案 1 :(得分:1)

以下是我将如何编写(但未经测试):

import MySQLdb

def insert_values(db, values):
    cursor = db.cursor()
    try:
        try:
            cursor.execute("""
            insert into pythontest (name1,name2,name3)
            values (%s, %s, %s)""", *values)
        except:
            db.rollback()
            raise
        else:
            db.commit()
    finally:
        cursor.close()

db = MySQLdb.connect("localhost","root","root","python" )

vars = ('name1','name2','name3')
insert_values(db, vars)

db.close()

游标启动一个事务,因此您不希望为多个更新重复使用相同的游标,除非它们是原子事务的一部分。