14
14
SQL_BIGAUTOFIELD = - 777444
15
15
16
16
def get_schema_name ():
17
- return getattr (settings , 'SCHEMA_TO_INSPECT' , 'dbo ' )
17
+ return getattr (settings , 'SCHEMA_TO_INSPECT' , 'SCHEMA_NAME() ' )
18
18
19
19
class DatabaseIntrospection (BaseDatabaseIntrospection ):
20
20
# Map type codes to Django Field types.
@@ -66,7 +66,7 @@ def get_table_list(self, cursor):
66
66
"""
67
67
Returns a list of table and view names in the current database.
68
68
"""
69
- sql = 'SELECT TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ' + "'" + get_schema_name () + "'"
69
+ sql = f 'SELECT TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = { get_schema_name ()} '
70
70
cursor .execute (sql )
71
71
types = {'BASE TABLE' : 't' , 'VIEW' : 'v' }
72
72
return [TableInfo (row [0 ], types .get (row [1 ]))
@@ -129,10 +129,10 @@ def get_table_description(self, cursor, table_name, identity_check=True):
129
129
return items
130
130
131
131
def get_sequences (self , cursor , table_name , table_fields = ()):
132
- cursor .execute ("""
132
+ cursor .execute (f """
133
133
SELECT c.name FROM sys.columns c
134
134
INNER JOIN sys.tables t ON c.object_id = t.object_id
135
- WHERE t.schema_id = SCHEMA_ID(""" + "'" + get_schema_name () + "'" + """ ) AND t.name = %s AND c.is_identity = 1""" ,
135
+ WHERE t.schema_id = SCHEMA_ID({ get_schema_name ()} ) AND t.name = %s AND c.is_identity = 1""" ,
136
136
[table_name ])
137
137
# SQL Server allows only one identity column per table
138
138
# https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql-identity-property
@@ -148,7 +148,7 @@ def get_relations(self, cursor, table_name):
148
148
# CONSTRAINT_TABLE_USAGE: http://msdn2.microsoft.com/en-us/library/ms179883.aspx
149
149
# REFERENTIAL_CONSTRAINTS: http://msdn2.microsoft.com/en-us/library/ms179987.aspx
150
150
# TABLE_CONSTRAINTS: http://msdn2.microsoft.com/en-us/library/ms181757.aspx
151
- sql = """
151
+ sql = f """
152
152
SELECT e.COLUMN_NAME AS column_name,
153
153
c.TABLE_NAME AS referenced_table_name,
154
154
d.COLUMN_NAME AS referenced_column_name
@@ -161,7 +161,7 @@ def get_relations(self, cursor, table_name):
161
161
ON c.CONSTRAINT_NAME = d.CONSTRAINT_NAME AND c.CONSTRAINT_SCHEMA = d.CONSTRAINT_SCHEMA
162
162
INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS e
163
163
ON a.CONSTRAINT_NAME = e.CONSTRAINT_NAME AND a.TABLE_SCHEMA = e.TABLE_SCHEMA
164
- WHERE a.TABLE_SCHEMA = """ + "'" + get_schema_name () + "'" + """ AND a.TABLE_NAME = %s AND a.CONSTRAINT_TYPE = 'FOREIGN KEY'"""
164
+ WHERE a.TABLE_SCHEMA = { get_schema_name ()} AND a.TABLE_NAME = %s AND a.CONSTRAINT_TYPE = 'FOREIGN KEY'"""
165
165
cursor .execute (sql , (table_name ,))
166
166
return dict ([[item [0 ], (item [2 ], item [1 ])] for item in cursor .fetchall ()])
167
167
@@ -171,14 +171,14 @@ def get_key_columns(self, cursor, table_name):
171
171
key columns in given table.
172
172
"""
173
173
key_columns = []
174
- cursor .execute ("""
174
+ cursor .execute (f """
175
175
SELECT c.name AS column_name, rt.name AS referenced_table_name, rc.name AS referenced_column_name
176
176
FROM sys.foreign_key_columns fk
177
177
INNER JOIN sys.tables t ON t.object_id = fk.parent_object_id
178
178
INNER JOIN sys.columns c ON c.object_id = t.object_id AND c.column_id = fk.parent_column_id
179
179
INNER JOIN sys.tables rt ON rt.object_id = fk.referenced_object_id
180
180
INNER JOIN sys.columns rc ON rc.object_id = rt.object_id AND rc.column_id = fk.referenced_column_id
181
- WHERE t.schema_id = SCHEMA_ID(""" + "'" + get_schema_name () + "'" + """ ) AND t.name = %s""" , [table_name ])
181
+ WHERE t.schema_id = SCHEMA_ID({ get_schema_name ()} ) AND t.name = %s""" , [table_name ])
182
182
key_columns .extend ([tuple (row ) for row in cursor .fetchall ()])
183
183
return key_columns
184
184
@@ -201,7 +201,7 @@ def get_constraints(self, cursor, table_name):
201
201
constraints = {}
202
202
# Loop over the key table, collecting things as constraints
203
203
# This will get PKs, FKs, and uniques, but not CHECK
204
- cursor .execute ("""
204
+ cursor .execute (f """
205
205
SELECT
206
206
kc.constraint_name,
207
207
kc.column_name,
@@ -241,9 +241,7 @@ def get_constraints(self, cursor, table_name):
241
241
kc.table_name = fk.table_name AND
242
242
kc.column_name = fk.column_name
243
243
WHERE
244
- kc.table_schema = """
245
- + "'" + get_schema_name () + "'" +
246
- """ AND
244
+ kc.table_schema = { get_schema_name ()} AND
247
245
kc.table_name = %s
248
246
ORDER BY
249
247
kc.constraint_name ASC,
@@ -263,7 +261,7 @@ def get_constraints(self, cursor, table_name):
263
261
# Record the details
264
262
constraints [constraint ]['columns' ].append (column )
265
263
# Now get CHECK constraint columns
266
- cursor .execute ("""
264
+ cursor .execute (f """
267
265
SELECT kc.constraint_name, kc.column_name
268
266
FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS kc
269
267
JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS c ON
@@ -272,7 +270,7 @@ def get_constraints(self, cursor, table_name):
272
270
kc.constraint_name = c.constraint_name
273
271
WHERE
274
272
c.constraint_type = 'CHECK' AND
275
- kc.table_schema = """ + "'" + get_schema_name () + "'" + """ AND
273
+ kc.table_schema = { get_schema_name ()} AND
276
274
kc.table_name = %s
277
275
""" , [table_name ])
278
276
for constraint , column in cursor .fetchall ():
@@ -289,7 +287,7 @@ def get_constraints(self, cursor, table_name):
289
287
# Record the details
290
288
constraints [constraint ]['columns' ].append (column )
291
289
# Now get indexes
292
- cursor .execute ("""
290
+ cursor .execute (f """
293
291
SELECT
294
292
i.name AS index_name,
295
293
i.is_unique,
@@ -311,7 +309,7 @@ def get_constraints(self, cursor, table_name):
311
309
ic.object_id = c.object_id AND
312
310
ic.column_id = c.column_id
313
311
WHERE
314
- t.schema_id = SCHEMA_ID(""" + "'" + get_schema_name () + "'" + """ ) AND
312
+ t.schema_id = SCHEMA_ID({ get_schema_name ()} ) AND
315
313
t.name = %s
316
314
ORDER BY
317
315
i.index_id ASC,
0 commit comments