Refactored get_random_function_sql() to DatabaseOperations.random_function_sql(). Refs #5106

git-svn-id: http://code.djangoproject.com/svn/django/trunk@5962 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty 2007-08-20 00:04:20 +00:00
parent aaf8760227
commit c44fb66551
10 changed files with 21 additions and 25 deletions

View File

@ -133,3 +133,9 @@ class BaseDatabaseOperations(object):
the field should use its default value. the field should use its default value.
""" """
return 'DEFAULT' return 'DEFAULT'
def random_function_sql(self):
"""
Returns a SQL expression that returns a random value.
"""
return 'RANDOM()'

View File

@ -67,6 +67,9 @@ class DatabaseOperations(BaseDatabaseOperations):
cursor.execute("SELECT %s FROM %s WHERE %s = @@IDENTITY" % (pk_name, table_name, pk_name)) cursor.execute("SELECT %s FROM %s WHERE %s = @@IDENTITY" % (pk_name, table_name, pk_name))
return cursor.fetchone()[0] return cursor.fetchone()[0]
def random_function_sql(self):
return 'RAND()'
class DatabaseWrapper(BaseDatabaseWrapper): class DatabaseWrapper(BaseDatabaseWrapper):
ops = DatabaseOperations() ops = DatabaseOperations()
@ -100,9 +103,6 @@ dictfetchone = util.dictfetchone
dictfetchmany = util.dictfetchmany dictfetchmany = util.dictfetchmany
dictfetchall = util.dictfetchall dictfetchall = util.dictfetchall
def get_random_function_sql():
return "RAND()"
def get_start_transaction_sql(): def get_start_transaction_sql():
return "BEGIN;" return "BEGIN;"

View File

@ -43,7 +43,6 @@ quote_name = complain
dictfetchone = complain dictfetchone = complain
dictfetchmany = complain dictfetchmany = complain
dictfetchall = complain dictfetchall = complain
get_random_function_sql = complain
get_start_transaction_sql = complain get_start_transaction_sql = complain
get_sql_flush = complain get_sql_flush = complain
get_sql_sequence_reset = complain get_sql_sequence_reset = complain

View File

@ -84,6 +84,9 @@ class DatabaseOperations(BaseDatabaseOperations):
sql += "%s," % offset sql += "%s," % offset
return sql + str(limit) return sql + str(limit)
def random_function_sql(self):
return 'RAND()'
class DatabaseWrapper(BaseDatabaseWrapper): class DatabaseWrapper(BaseDatabaseWrapper):
ops = DatabaseOperations() ops = DatabaseOperations()
@ -162,9 +165,6 @@ dictfetchone = util.dictfetchone
dictfetchmany = util.dictfetchmany dictfetchmany = util.dictfetchmany
dictfetchall = util.dictfetchall dictfetchall = util.dictfetchall
def get_random_function_sql():
return "RAND()"
def get_start_transaction_sql(): def get_start_transaction_sql():
return "BEGIN;" return "BEGIN;"

View File

@ -94,6 +94,9 @@ class DatabaseOperations(BaseDatabaseOperations):
sql += "%s," % offset sql += "%s," % offset
return sql + str(limit) return sql + str(limit)
def random_function_sql(self):
return 'RAND()'
class DatabaseWrapper(BaseDatabaseWrapper): class DatabaseWrapper(BaseDatabaseWrapper):
ops = DatabaseOperations() ops = DatabaseOperations()
@ -181,9 +184,6 @@ dictfetchone = util.dictfetchone
dictfetchmany = util.dictfetchmany dictfetchmany = util.dictfetchmany
dictfetchall = util.dictfetchall dictfetchall = util.dictfetchall
def get_random_function_sql():
return "RAND()"
def get_start_transaction_sql(): def get_start_transaction_sql():
return "BEGIN;" return "BEGIN;"

View File

@ -70,6 +70,9 @@ class DatabaseOperations(BaseDatabaseOperations):
def max_name_length(self): def max_name_length(self):
return 30 return 30
def random_function_sql(self):
return "DBMS_RANDOM.RANDOM"
class DatabaseWrapper(BaseDatabaseWrapper): class DatabaseWrapper(BaseDatabaseWrapper):
ops = DatabaseOperations() ops = DatabaseOperations()
@ -186,9 +189,6 @@ def get_field_cast_sql(db_type):
else: else:
return "%s%s" return "%s%s"
def get_random_function_sql():
return "DBMS_RANDOM.RANDOM"
def get_start_transaction_sql(): def get_start_transaction_sql():
return None return None
@ -380,7 +380,7 @@ def get_query_set_class(DefaultQuerySet):
ordering_to_use = opts.ordering ordering_to_use = opts.ordering
for f in handle_legacy_orderlist(ordering_to_use): for f in handle_legacy_orderlist(ordering_to_use):
if f == '?': # Special case. if f == '?': # Special case.
order_by.append(backend.get_random_function_sql()) order_by.append(DatabaseOperations().random_function_sql())
else: else:
if f.startswith('-'): if f.startswith('-'):
col_name = f[1:] col_name = f[1:]

View File

@ -131,9 +131,6 @@ def dictfetchall(cursor):
"Returns all rows from a cursor as a dict" "Returns all rows from a cursor as a dict"
return cursor.dictfetchall() return cursor.dictfetchall()
def get_random_function_sql():
return "RANDOM()"
def get_start_transaction_sql(): def get_start_transaction_sql():
return "BEGIN;" return "BEGIN;"

View File

@ -85,9 +85,6 @@ dictfetchone = util.dictfetchone
dictfetchmany = util.dictfetchmany dictfetchmany = util.dictfetchmany
dictfetchall = util.dictfetchall dictfetchall = util.dictfetchall
def get_random_function_sql():
return "RANDOM()"
def get_start_transaction_sql(): def get_start_transaction_sql():
return "BEGIN;" return "BEGIN;"

View File

@ -118,9 +118,6 @@ def _sqlite_extract(lookup_type, dt):
return None return None
return str(getattr(dt, lookup_type)) return str(getattr(dt, lookup_type))
def get_random_function_sql():
return "RANDOM()"
def get_start_transaction_sql(): def get_start_transaction_sql():
return "BEGIN;" return "BEGIN;"

View File

@ -71,7 +71,7 @@ def orderlist2sql(order_list, opts, prefix=''):
if f.startswith('-'): if f.startswith('-'):
output.append('%s%s DESC' % (prefix, backend.quote_name(orderfield2column(f[1:], opts)))) output.append('%s%s DESC' % (prefix, backend.quote_name(orderfield2column(f[1:], opts))))
elif f == '?': elif f == '?':
output.append(backend.get_random_function_sql()) output.append(connection.ops.random_function_sql())
else: else:
output.append('%s%s ASC' % (prefix, backend.quote_name(orderfield2column(f, opts)))) output.append('%s%s ASC' % (prefix, backend.quote_name(orderfield2column(f, opts))))
return ', '.join(output) return ', '.join(output)
@ -531,7 +531,7 @@ class _QuerySet(object):
ordering_to_use = opts.ordering ordering_to_use = opts.ordering
for f in handle_legacy_orderlist(ordering_to_use): for f in handle_legacy_orderlist(ordering_to_use):
if f == '?': # Special case. if f == '?': # Special case.
order_by.append(backend.get_random_function_sql()) order_by.append(connection.ops.random_function_sql())
else: else:
if f.startswith('-'): if f.startswith('-'):
col_name = f[1:] col_name = f[1:]