Opened 17 years ago

Closed 17 years ago

#4765 closed (fixed)

sqlite3 executemany wrapper fails with empty parameter list

Reported by: jdetaeye@… Owned by: nobody
Component: Database layer (models, ORM) Version: dev
Severity: Keywords: sqlite3
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

The following statement fails with the sqlite wrapper:

  cursor = connection.cursor()
  cursor.executemany("insert into test (name) values(%s)",[])

It raises an IndexError exception when the code tries to pick up the first element in the parameter list.
The code is in the following statements in the file django\db\backends\sqlite3\base.py :

    def executemany(self, query, param_list):
        query = self.convert_query(query, len(param_list[0]))
        return Database.Cursor.executemany(self, query, param_list)

An obvious fix is as follows:

    def executemany(self, query, param_list):
        try:
          query = self.convert_query(query, len(param_list[0]))
          return Database.Cursor.executemany(self, query, param_list)
        except IndexError:
          # No parameter list provided
          return None

Change History (1)

comment:1 by Erin Kelly, 17 years ago

Resolution: fixed
Status: newclosed

(In [6218]) Fixed #4896: fixed #4765: Patch for cursor.executemany using oracle and
sqlite3. Thanks, jdetaeye@…

Note: See TracTickets for help on using tickets.
Back to Top