summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2005-11-01 01:32:54 +0000
committerAdrian Holovaty <adrian@holovaty.com>2005-11-01 01:32:54 +0000
commit23bb8c4a4b5e785cd4992689c529f2d9a86898b2 (patch)
tree1675b9911377c750f8b3b60561fbcf8cd1507480
parentc65332d409cf477d4b55f1ff3bacbdea4a0afaff (diff)
Added quote_name hook for each database backend. Refs #121. Thanks, Robin Munn -- we miss you.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@1039 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/core/db/__init__.py1
-rw-r--r--django/core/db/backends/ado_mssql.py4
-rw-r--r--django/core/db/backends/mysql.py5
-rw-r--r--django/core/db/backends/postgresql.py5
-rw-r--r--django/core/db/backends/sqlite3.py5
5 files changed, 20 insertions, 0 deletions
diff --git a/django/core/db/__init__.py b/django/core/db/__init__.py
index f0ffeebc2e..6636d4f176 100644
--- a/django/core/db/__init__.py
+++ b/django/core/db/__init__.py
@@ -36,6 +36,7 @@ get_limit_offset_sql = dbmod.get_limit_offset_sql
get_random_function_sql = dbmod.get_random_function_sql
get_table_list = dbmod.get_table_list
get_relations = dbmod.get_relations
+quote_name = dbmod.quote_name
OPERATOR_MAPPING = dbmod.OPERATOR_MAPPING
DATA_TYPES = dbmod.DATA_TYPES
DATA_TYPES_REVERSE = dbmod.DATA_TYPES_REVERSE
diff --git a/django/core/db/backends/ado_mssql.py b/django/core/db/backends/ado_mssql.py
index 9ea0d5456d..a673c4812e 100644
--- a/django/core/db/backends/ado_mssql.py
+++ b/django/core/db/backends/ado_mssql.py
@@ -110,6 +110,10 @@ def get_table_list(cursor):
def get_relations(cursor, table_name):
raise NotImplementedError
+def quote_name(name):
+ # TODO: Figure out how MS-SQL quotes database identifiers.
+ return name
+
OPERATOR_MAPPING = {
'exact': '=',
'iexact': 'LIKE',
diff --git a/django/core/db/backends/mysql.py b/django/core/db/backends/mysql.py
index 23815a80cb..e7ede84a12 100644
--- a/django/core/db/backends/mysql.py
+++ b/django/core/db/backends/mysql.py
@@ -122,6 +122,11 @@ def get_table_list(cursor):
def get_relations(cursor, table_name):
raise NotImplementedError
+def quote_name(name):
+ if name.startswith("`") and name.endswith("`"):
+ return name # Quoting once is enough.
+ return "`%s`" % name
+
OPERATOR_MAPPING = {
'exact': '=',
'iexact': 'LIKE',
diff --git a/django/core/db/backends/postgresql.py b/django/core/db/backends/postgresql.py
index c922fd42f6..a1de11e3df 100644
--- a/django/core/db/backends/postgresql.py
+++ b/django/core/db/backends/postgresql.py
@@ -116,6 +116,11 @@ def get_relations(cursor, table_name):
continue
return relations
+def quote_name(name):
+ if name.startswith('"') and name.endswith('"'):
+ return name # Quoting once is enough.
+ return '"%s"' % name
+
# Register these custom typecasts, because Django expects dates/times to be
# in Python's native (standard-library) datetime/time format, whereas psycopg
# use mx.DateTime by default.
diff --git a/django/core/db/backends/sqlite3.py b/django/core/db/backends/sqlite3.py
index ea05302a61..3fde8c77e1 100644
--- a/django/core/db/backends/sqlite3.py
+++ b/django/core/db/backends/sqlite3.py
@@ -124,6 +124,11 @@ def get_table_list(cursor):
def get_relations(cursor, table_name):
raise NotImplementedError
+def quote_name(name):
+ if name.startswith('"') and name.endswith('"'):
+ return name # Quoting once is enough.
+ return '"%s"' % name
+
# Operators and fields ########################################################
OPERATOR_MAPPING = {