@@ -62,7 +62,7 @@ def get_table_list(self, cursor):
6262 """
6363 Returns a list of table and view names in the current database.
6464 """
65- sql = 'SELECT TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES'
65+ sql = 'SELECT TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = SCHEMA_NAME() '
6666 cursor .execute (sql )
6767 types = {'BASE TABLE' : 't' , 'VIEW' : 'v' }
6868 return [TableInfo (row [0 ], types .get (row [1 ]))
@@ -114,7 +114,7 @@ def get_sequences(self, cursor, table_name, table_fields=()):
114114 cursor .execute ("""
115115 SELECT c.name FROM sys.columns c
116116 INNER JOIN sys.tables t ON c.object_id = t.object_id
117- WHERE t.name = %s AND c.is_identity = 1""" ,
117+ WHERE t.schema_id = SCHEMA_ID() AND t. name = %s AND c.is_identity = 1""" ,
118118 [table_name ])
119119 # SQL Server allows only one identity column per table
120120 # https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql-identity-property
@@ -137,14 +137,14 @@ def get_relations(self, cursor, table_name):
137137 d.COLUMN_NAME AS referenced_column_name
138138FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS a
139139INNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS b
140- ON a.CONSTRAINT_NAME = b.CONSTRAINT_NAME
140+ ON a.CONSTRAINT_NAME = b.CONSTRAINT_NAME AND a.TABLE_SCHEMA = b.CONSTRAINT_SCHEMA
141141INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE AS c
142- ON b.UNIQUE_CONSTRAINT_NAME = c.CONSTRAINT_NAME
142+ ON b.UNIQUE_CONSTRAINT_NAME = c.CONSTRAINT_NAME AND b.CONSTRAINT_SCHEMA = c.CONSTRAINT_SCHEMA
143143INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS d
144- ON c.CONSTRAINT_NAME = d.CONSTRAINT_NAME
144+ ON c.CONSTRAINT_NAME = d.CONSTRAINT_NAME AND c.CONSTRAINT_SCHEMA = d.CONSTRAINT_SCHEMA
145145INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS e
146- ON a.CONSTRAINT_NAME = e.CONSTRAINT_NAME
147- WHERE a.TABLE_NAME = %s AND a.CONSTRAINT_TYPE = 'FOREIGN KEY'"""
146+ ON a.CONSTRAINT_NAME = e.CONSTRAINT_NAME AND a.TABLE_SCHEMA = e.TABLE_SCHEMA
147+ WHERE a.TABLE_SCHEMA = SCHEMA_NAME() AND a. TABLE_NAME = %s AND a.CONSTRAINT_TYPE = 'FOREIGN KEY'"""
148148 cursor .execute (sql , (table_name ,))
149149 return dict ([[item [0 ], (item [2 ], item [1 ])] for item in cursor .fetchall ()])
150150
@@ -167,15 +167,20 @@ def get_indexes(self, cursor, table_name):
167167
168168 pk_uk_sql = """
169169SELECT d.COLUMN_NAME, c.CONSTRAINT_TYPE FROM (
170- SELECT a.CONSTRAINT_NAME, a.CONSTRAINT_TYPE
170+ SELECT a.CONSTRAINT_NAME, a.CONSTRAINT_TYPE, a.TABLE_SCHEMA
171171FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS a
172172INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS b
173- ON a.CONSTRAINT_NAME = b.CONSTRAINT_NAME AND a.TABLE_NAME = b.TABLE_NAME
174- WHERE a.TABLE_NAME = %s AND (CONSTRAINT_TYPE = 'PRIMARY KEY' OR CONSTRAINT_TYPE = 'UNIQUE')
175- GROUP BY a.CONSTRAINT_TYPE, a.CONSTRAINT_NAME
173+ ON a.CONSTRAINT_NAME = b.CONSTRAINT_NAME
174+ AND a.TABLE_SCHEMA = b.TABLE_SCHEMA
175+ AND a.TABLE_NAME = b.TABLE_NAME
176+ WHERE a.TABLE_SCHEMA = SCHEMA_NAME()
177+ AND a.TABLE_NAME = %s
178+ AND (CONSTRAINT_TYPE = 'PRIMARY KEY' OR CONSTRAINT_TYPE = 'UNIQUE')
179+ GROUP BY a.CONSTRAINT_TYPE, a.CONSTRAINT_NAME, a.TABLE_SCHEMA
176180HAVING(COUNT(a.CONSTRAINT_NAME)) = 1) AS c
177181INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS d
178- ON c.CONSTRAINT_NAME = d.CONSTRAINT_NAME"""
182+ ON c.CONSTRAINT_NAME = d.CONSTRAINT_NAME
183+ AND c.TABLE_SCHEMA = d.TABLE_SCHEMA"""
179184
180185 field_names = [item [0 ] for item in self .get_table_description (cursor , table_name , identity_check = False )]
181186 indexes , results = {}, {}
@@ -201,6 +206,7 @@ def get_indexes(self, cursor, table_name):
201206 HAVING count(1) = 1)
202207AND ix.is_primary_key = 0
203208AND ix.is_unique_constraint = 0
209+ AND t.schema_id = SCHEMA_ID()
204210AND t.name = %s"""
205211
206212 cursor .execute (ix_sql , (table_name ,))
@@ -228,7 +234,7 @@ def get_key_columns(self, cursor, table_name):
228234 INNER JOIN sys.columns c ON c.object_id = t.object_id AND c.column_id = fk.parent_column_id
229235 INNER JOIN sys.tables rt ON rt.object_id = fk.referenced_object_id
230236 INNER JOIN sys.columns rc ON rc.object_id = rt.object_id AND rc.column_id = fk.referenced_column_id
231- WHERE t.name = %s""" , [table_name ])
237+ WHERE t.schema_id = SCHEMA_ID() AND t. name = %s""" , [table_name ])
232238 key_columns .extend ([tuple (row ) for row in cursor .fetchall ()])
233239 return key_columns
234240
@@ -291,6 +297,7 @@ def get_constraints(self, cursor, table_name):
291297 kc.table_name = fk.table_name AND
292298 kc.column_name = fk.column_name
293299 WHERE
300+ kc.table_schema = SCHEMA_NAME() AND
294301 kc.table_name = %s
295302 ORDER BY kc.ordinal_position ASC
296303 """ , [table_name ])
@@ -317,6 +324,7 @@ def get_constraints(self, cursor, table_name):
317324 kc.constraint_name = c.constraint_name
318325 WHERE
319326 c.constraint_type = 'CHECK' AND
327+ kc.table_schema = SCHEMA_NAME() AND
320328 kc.table_name = %s
321329 """ , [table_name ])
322330 for constraint , column in cursor .fetchall ():
@@ -355,6 +363,7 @@ def get_constraints(self, cursor, table_name):
355363 ic.object_id = c.object_id AND
356364 ic.column_id = c.column_id
357365 WHERE
366+ t.schema_id = SCHEMA_ID() AND
358367 t.name = %s
359368 ORDER BY
360369 i.index_id ASC,
0 commit comments