Как проверить все таблицы в базах данных mssql с помощью Django inspect
У меня есть база данных mssql с несколькими таблицами:
[dbo].[one_table]
[dbo].[two_table]
[model].[three_table]
[model].[four_table]
[plan].[five_table]
my django settings.py:
DATABASES = {
'default': {
"ENGINE": "mssql",
"NAME": "ips_db",
"USER": "sa",
"PASSWORD": "***",
"HOST": "***",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 17 for SQL Server",
},
},
}
Когда я пытаюсь проверить базу данных по
python inspectdb > models.py
Я получаю только one_table
и two_table
class One_table(models.Model):
firstname = models.CharField(db_column='FirstName', max_length=30, db_collation='SQL_Latin1_General_CP1_CI_AS') # Field name made lowercase.
lastname = models.CharField(db_column='LastName', max_length=40, db_collation='SQL_Latin1_General_CP1_CI_AS') # Field name made lowercase.
class Meta:
managed = False
db_table = 'One_table'
class Two_table(models.Model):
test = models.CharField(db_column='Test', max_length=10, db_collation='SQL_Latin1_General_CP1_CI_AS', blank=True, null=True) # Field name made lowercase.
tes2 = models.CharField(db_column='Tes2', max_length=10, db_collation='SQL_Latin1_General_CP1_CI_AS', blank=True, null=True) # Field name made lowercase.
class Meta:
managed = False
db_table = 'Two_table'
Как я могу получить все модели таблиц из моей базы данных???
У меня нет такой проблемы. Просто запишите каждую таблицу через запятую
Я смотрел на mssql\introspection.py. Там есть Databaseintrospection.get_table_list(). Sql запрос в этом методе такой
sql = 'SELECT TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ' + "'" + get_schema_name() + "'"
и я смотрю на get_schema_name()
и...
это
def get_schema_name():
return getattr(settings, 'SCHEMA_TO_INSPECT', 'dbo')
Потому что я просто удаляю WHERE TABLE_SCHEMA"
и получаю все мои таблицы.
Это выглядит очень странно. Я не могу выбрать схему.