Django

Code

Changeset 5958

Show
Ignore:
Timestamp:
08/19/07 18:18:43 (1 year ago)
Author:
adrian
Message:

Refactored get_last_insert_id() to DatabaseOperations?.last_insert_id(). Refs #5106

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/db/backends/ado_mssql/base.py

    r5957 r5958  
    6464        return " DEFERRABLE INITIALLY DEFERRED" 
    6565 
     66    def last_insert_id(self, cursor, table_name, pk_name): 
     67        cursor.execute("SELECT %s FROM %s WHERE %s = @@IDENTITY" % (pk_name, table_name, pk_name)) 
     68        return cursor.fetchone()[0] 
     69 
    6670class DatabaseWrapper(BaseDatabaseWrapper): 
    6771    ops = DatabaseOperations() 
     
    96100dictfetchmany = util.dictfetchmany 
    97101dictfetchall  = util.dictfetchall 
    98  
    99 def get_last_insert_id(cursor, table_name, pk_name): 
    100     cursor.execute("SELECT %s FROM %s WHERE %s = @@IDENTITY" % (pk_name, table_name, pk_name)) 
    101     return cursor.fetchone()[0] 
    102102 
    103103def get_limit_offset_sql(limit, offset=None): 
  • django/trunk/django/db/backends/dummy/base.py

    r5957 r5958  
    4444dictfetchmany = complain 
    4545dictfetchall = complain 
    46 get_last_insert_id = complain 
    4746get_limit_offset_sql = complain 
    4847get_random_function_sql = complain 
  • django/trunk/django/db/backends/__init__.py

    r5957 r5958  
    100100        """ 
    101101        raise NotImplementedError('Full-text search is not implemented for this database backend') 
     102 
     103    def last_insert_id(self, cursor, table_name, pk_name): 
     104        """ 
     105        Given a cursor object that has just performed an INSERT statement into 
     106        a table that has an auto-incrementing ID, returns the newly created ID. 
     107 
     108        This method also receives the table name and the name of the primary-key 
     109        column. 
     110        """ 
     111        return cursor.lastrowid 
  • django/trunk/django/db/backends/mysql/base.py

    r5957 r5958  
    156156dictfetchall  = util.dictfetchall 
    157157 
    158 def get_last_insert_id(cursor, table_name, pk_name): 
    159     return cursor.lastrowid 
    160  
    161158def get_limit_offset_sql(limit, offset=None): 
    162159    sql = "LIMIT " 
  • django/trunk/django/db/backends/mysql_old/base.py

    r5957 r5958  
    175175dictfetchall  = util.dictfetchall 
    176176 
    177 def get_last_insert_id(cursor, table_name, pk_name): 
    178     return cursor.lastrowid 
    179  
    180177def get_limit_offset_sql(limit, offset=None): 
    181178    sql = "LIMIT " 
  • django/trunk/django/db/backends/oracle/base.py

    r5957 r5958  
    5858        return " DEFERRABLE INITIALLY DEFERRED" 
    5959 
     60    def last_insert_id(self, cursor, table_name, pk_name): 
     61        sq_name = util.truncate_name(table_name, get_max_name_length()-3) 
     62        cursor.execute('SELECT %s_sq.currval FROM dual' % sq_name) 
     63        return cursor.fetchone()[0] 
     64 
    6065class DatabaseWrapper(BaseDatabaseWrapper): 
    6166    ops = DatabaseOperations() 
     
    167172dictfetchmany = util.dictfetchmany 
    168173dictfetchall  = util.dictfetchall 
    169  
    170 def get_last_insert_id(cursor, table_name, pk_name): 
    171     sq_name = util.truncate_name(table_name, get_max_name_length()-3) 
    172     cursor.execute('SELECT %s_sq.currval FROM dual' % sq_name) 
    173     return cursor.fetchone()[0] 
    174174 
    175175def get_field_cast_sql(db_type): 
  • django/trunk/django/db/backends/postgresql/base.py

    r5957 r5958  
    6969    def deferrable_sql(self): 
    7070        return " DEFERRABLE INITIALLY DEFERRED" 
     71 
     72    def last_insert_id(self, cursor, table_name, pk_name): 
     73        cursor.execute("SELECT CURRVAL('\"%s_%s_seq\"')" % (table_name, pk_name)) 
     74        return cursor.fetchone()[0] 
    7175 
    7276class DatabaseWrapper(BaseDatabaseWrapper): 
     
    127131    "Returns all rows from a cursor as a dict" 
    128132    return cursor.dictfetchall() 
    129  
    130 def get_last_insert_id(cursor, table_name, pk_name): 
    131     cursor.execute("SELECT CURRVAL('\"%s_%s_seq\"')" % (table_name, pk_name)) 
    132     return cursor.fetchone()[0] 
    133133 
    134134def get_limit_offset_sql(limit, offset=None): 
  • django/trunk/django/db/backends/postgresql_psycopg2/base.py

    r5957 r5958  
    3131    def deferrable_sql(self): 
    3232        return " DEFERRABLE INITIALLY DEFERRED" 
     33 
     34    def last_insert_id(self, cursor, table_name, pk_name): 
     35        cursor.execute("SELECT CURRVAL('\"%s_%s_seq\"')" % (table_name, pk_name)) 
     36        return cursor.fetchone()[0] 
    3337 
    3438class DatabaseWrapper(BaseDatabaseWrapper): 
     
    8185dictfetchmany = util.dictfetchmany 
    8286dictfetchall = util.dictfetchall 
    83  
    84 def get_last_insert_id(cursor, table_name, pk_name): 
    85     cursor.execute("SELECT CURRVAL('\"%s_%s_seq\"')" % (table_name, pk_name)) 
    86     return cursor.fetchone()[0] 
    8787 
    8888def get_limit_offset_sql(limit, offset=None): 
  • django/trunk/django/db/backends/sqlite3/base.py

    r5957 r5958  
    109109dictfetchall  = util.dictfetchall 
    110110 
    111 def get_last_insert_id(cursor, table_name, pk_name): 
    112     return cursor.lastrowid 
    113  
    114111def _sqlite_extract(lookup_type, dt): 
    115112    try: 
  • django/trunk/django/db/models/base.py

    r5934 r5958  
    255255                     backend.get_pk_default_value())) 
    256256            if self._meta.has_auto_field and not pk_set: 
    257                 setattr(self, self._meta.pk.attname, backend.get_last_insert_id(cursor, self._meta.db_table, self._meta.pk.column)) 
     257                setattr(self, self._meta.pk.attname, connection.ops.last_insert_id(cursor, self._meta.db_table, self._meta.pk.column)) 
    258258        transaction.commit_unless_managed() 
    259259